Chinaunix首页 | 论坛 | 博客
  • 博客访问: 313539
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-13 10:58
文章分类

全部博文(82)

文章存档

2018年(2)

2017年(9)

2016年(71)

我的朋友

分类: 嵌入式

2016-05-28 09:23:02

1.   生成动态库.so

文件hello.c:

   #include

    void hello(void)
    
{

         printf("hello\n");

    }  

   执行:

    # gcc -c hello.c

    # gcc -shared -fPCI -o libhello.so hello.o

   生成libhello.so动态库文件
 

2.   在主函数中添加动态库文件

文件main.c:

#include

extern void hello(void);

int main(void)

{

      hello();

      return 0;

}

 执行:

 # gcc -o test main.c -L. -lhello –Wall

 生成可执行文件test

 执行:

     # ./test
       
./test: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory

     出现错误,找不到动态库文件libhello.so
 

3.   设定动态库文件搜索路径方法(以下也是系统默认收索路径顺序

1) 编译目标代码时指定的动态库搜索路径,将第二步主函数编译改为

# gcc -o test main.c -L. -lhello -Wl,-rpath,./

其中-rpath,./表示在当前路径中收索;若该语句是在Makefile中执行的,则需要改为下边形式

# gcc -o test main.c -L. -lhello -Wl,-rpath,$(shell pwd)

2) 环境变量LD_LIBRARY_PATH指定的动态库搜索路径,导入当前路径

# export LD_LIBRARY_PATH=$PWD

3) 加入默认的动态库搜索路径/lib/usr/lib

# cp libhello.so /lib

4) 配置文件/etc/ld.so.conf中指定的动态库搜索路径,两步:

首先,在该文件中追加一行需要的动态库的路径如:/root/test/conf/lib

echo “/root/test/conf/lib” >> /etc/ld.so.conf

其次,运行以下命令,使配置生效:

# ldconfig

阅读(775) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~