// 静态库制作的步骤
主函数测试数据:main.c
功能函数实现:add.c add.h
将功能函数编译为库函数(二进制文件)
1. 将功能文件*.c编译成*.o文件
gcc add.c -o add.o -c
2. 将*.o文件塞入.a文件之中, 文件名开头需要添加lib
ar rcs libadd.a add.o
3. 联合编译
gcc main.c libadd.a -o main
4. 测试
./main
// 动态库制作的步骤
主函数测试数据:main.c
功能函数实现:add.c add.h
将功能函数编译为库文件(二进制文件)
1. 将功能函数源文件编译为*.o文件
gcc add.c -o add.o -fPIC -c
2. 将*.o文件塞入.so文件之中, 文件名开头需要添加lib
gcc -shared -fPIC -o libadd.so add.o
3. 联合编译需要链接动态库
gcc main.c -o main -L . -ladd // -L . 代表路径
4. 测试
./main
如果报错如下:
./main: error while loading shared libraries:
libadd.so: cannot open shared object file:
No such file or directory
解决方法1:
(1). export LD_LIBRARY_PATH=动态库所在的路径
(2). 在文件/etc/ld.so.conf中的末尾处直接添加路径, 例如:/usr/local/lib
(3). 终端运行: ldconfig
解决方法2: 将对应的动态库拷贝到linux系统中的lib文件中
sudo cp libadd.so /usr/lib
最后重新运行
版权声明:本文为Michael_234198652原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。