分类: 嵌入式
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