静态库和共享库
作者:互联网
静态库:对空间要求较低,而时间要求较高的程序中。
动态库:对时间要求较低,而空间要求较高的程序中。
静态库
制作步骤:
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 :查看调用信息
标签:gcc,lib,静态,add,库名,共享,动态 来源: https://blog.csdn.net/qq_41256768/article/details/120624809