其他分享
首页 > 其他分享> > 静态库、动态库文件制作

静态库、动态库文件制作

作者:互联网

基本概念

如何制作库文件

   无论是静态库还是动态库都需要.o作为原材料。

静态库制作:

1. 获得对应功能的.o文件
$ gcc show_ui.c -o show_ui.o -c -fPIC -I../INC // -fPIC 告诉编译器生成一个跟地址无关的二进制文件
$ gcc oper.c -o oper.o -c -fPIC -I../INC 
$ gcc get_input.c -o get_input.o -c -fPIC -I../INC
2. 把刚才获得的3个.o文件柔和成一个库文件
$ ar rcs libmaster.a *.o
3. 程序编译
gcc main.c -o ../BIN/main -I../INC -L./ -lmaster gcc 
-I../INC // 指定头文件路径 -L./ // 指定库文件路径 -lmaster // 需要链接的库名

动态库制作:

1. 跟静态库一样先准备好.o文件 2. 制作动态库
$ gcc -shared -fPIC -o libmaster.so *.o // 使用所有的.o文件来统一生成一个动态链接库libmaster.so  //-shared 生成共享库
3. 运行程序
$ ./main1 ./main1: error while loading shared libraries: libmaster.so: cannot open shared object file: No such file or directory
错误原因:因为还没有告诉程序动态库文件在哪里,所以报错   解决方法: 方法1 : [ 推荐使用 ] 把库文件存放到指定的路径中 /lib 或/usr/lib
sudo cp libmaster.so /lib //把 库拷贝到 库所存放的路径
方法2 : 设置环境变量 1. 使用vim打开
$ vim ~/.bashrc
2. 在文件末尾添加
export LD_LIBRARY_PATH=/home/gec/mylib:$LD_LIBRARY_PATH
3. 从新生效配置脚本
$ source ~/.bashrc
实验发现gcc 默认会选择使用动态库 , 也可手动要求使用静态编译程序

标签:文件,gcc,..,静态,fPIC,so,动态,制作,INC
来源: https://www.cnblogs.com/ding-ding-light/p/14087753.html