量化交易之linux篇 – makefile – 动态库.so、静态库.a的制作

  • Post author:
  • Post category:linux


// 静态库制作的步骤
主函数测试数据: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 版权协议,转载请附上原文出处链接和本声明。