静态库&动态库:
静态库:对空间要求较低,而时间要求较高的核心程序中
动态库:对时间要求较低 ,对空间要求较高
静态库制作及使用步骤:
1. 将.c生成 .o 文件
gcc -c add.c -o add.o
2.使用 ar 工具制作静态库
ar rcs lib库名.a add.o sub.o div1.o
3.编译静态库到可执行文件中:
gcc test.c (库路径)lib库名.a -o a.out -I (头文件路径)
gcc test.c ./lib/libmymath.a -o a.out -I ./inc
动态库的制作及使用:
1.将.c生成 .o 文件 (生成与位置无关的代码 -fPIC)
gcc -c add.c -o add.o -fPIC
2.使用 gcc -shared 制作动态库
gcc -shared -o lib库名.so add.o sub.o div.o
3.编译可执行程序时,指定所使用的动态库 -l 指定库名 -L指定库路径 -I 指定头文件路径
gcc test.c -o a.out -lmymath -L ./lib -I ./inc
4.运行可执行程序 ./a.out 出错!!!
原因:
链接器: 工作于链接阶段 ,工作时 需要 -l 和-L
动态链接器: 工作于 程序运行阶段, 工作时需要提供动态库所在目录位置
通过环境变量:
export LD_LIBRARY_PATH=动态库路径
./a.out 成功 (临时生效 ,终端重启环境变量失效)
永久生效:
方法一 写入终端配置文件 .bashrc
1) vi ~/.bashrc
2) 写入 export LD_LIBRARY_PATH=动态库路径 保存(建议使用绝对路径)
3). .bashrc或者 source .bashrc 或者 重启终端 让修改后的 .bashrc 生效
4)./a.out 成功!!!
方法二 拷贝自定义动态库 到/lib (标准c库所在 目录位置)