静态库:对空间要求较低,而时间要求较高的程序中。 动态库:对时间要求较低,而空间要求较高的程序中。
静态库
制作步骤:
1.将.c生成.o文件
gcc -c add.c -o add.o
2.使用ar工具制作静态库
ar rcs lib库名.a add.o
使用
编译静态库到可执行文件中:
gcc test.c 库名 -o a.out -I./inc
动态库
制作步骤:
1.将.c生成.o文件 (生成与位置无关的代码 -fPIC)
gcc -c add.c -o add.o -fPIC
2.使用gcc -shared制作动态库
gcc -shared lib库名.so add.o
使用
编译可执行程序时,指定所使用的动态库 -l:指定库名 -L:指定库路径 -I:头文件路径
gcc test.c -l库名 -L./lib -I./inc
错误原因
链接器: 工作于链接阶段,工作时需要 -l -L支持 动态链接器: 工作于程序运行阶段,工作是需要提供动态库所在目录位置 1.临时生效
export LD_LIBRARY_PATH=./lib
2.永久有效
vim ~/.bashrc
加入export LD_LIBRARY_PATH=./lib
. .bashrc或者source .bashrc 运行一下
3.拷贝自定义动态库至/lib(标准c库所在目录位置)不推荐 4.配置文件
sudo vi /etc/ld.so.conf
sudo ldconfig -v
ldd a.out :查看调用信息
|