共享库与静态库的区别
静态库是把方法拷贝了一份到要执行的main程序,
而共享库是把方法进行标记,当要用的时候再进行编译
一般来说使用共享库比静态库体积要小
查询使用的共享库
头文件和库文件地址
生成静态库文件步骤
1. 先将需要生成库文件的所有文件编译成.o文件;
2.创建静态库(使用ar命令)
ar crv libxxx.a xxxx.o xxx.o
c:创建库
r:将方法添加的库中
v:显示过程
当做完上面两步以后对main程序进行编译,发现报错,
发现可以从.c转换到.o,但是链接时发生错误
引出静态库的使用方法:
3.静态库的使用
gcc -o main main.c -L. -lxxx
-L指定库的存储位置
-l:指定库的名称
静态库具有的缺点
“-L.” 里的 “.” 代表 当前位置,也可以加路径
“-l” 后面加静态库名称,比如创建静态库是libfoo.a,库名就是foo
生成共享库文件步骤
1. 先将需要生成库文件的所有文件编译成.o文件;
2.使用 gcc 命令将第一步编译的所有”.o”文件生成共享库
生成共享库之后,直接执行 main 程序,发现出错,原因是系统加载共享库时,找不到对应的
共享库文件”libfoo.so”, 但是该库确实在当前目录下存在。这是为什么呢?因为系统默认
只会去存储库的标准位置(/lib 或/usr/lib 等)加载,而不会在当前位置寻找。所以将库拷贝到
/usr/lib 下,再执行程序,就可以成功。
如果库不在标准位置下,也可以通过设置环境变量”LD_LIBRARY_PATH”来指定加
载库的路径。
通过给环境变量赋值