【C语言】动态库

0. 文件清单

add.c

#include <stdio.h>
int add()
{
    printf("add init\n");
    return 0;
}

add.h

int add();

main.c

#include <stdio.h>
int mian()
{
    add();
    return 0;
} 
1. 生成 add.o

gcc -c add.c -fPIC

2. 生成共享库 libadd.so

gcc -o libadd.so add.o -shared

3. 编译主程序 app

gcc main.c -o app -L . -ladd
注:此时运行app会报错,原因是程序运行load动态函数库时,找不到该函数库
./app: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory

4. 解决方法

a. 将libadd.so放到/usr/lib目录下,执行cp libadd.so /usr/lib,然后运行./app,程序运行正常,问题得到解决

b. 使用环境变量LD_LIBRARY_PATH,程序运行load动态函数库时,会先在LD_LIBRARY_PATH指定的目录下查找函数库,找不到就再去/usr/lib下查找,执行export LD_LIBRARY_PATH=/home/zzk/demo/workspace/,然后运行./app,程序运行正常,问题得到解决。

猜你喜欢

转载自blog.csdn.net/u012335044/article/details/80511547