静态库与动态库的使用
https://www.cnblogs.com/sunsky303/p/7731911.html
**(
(a)静态库
在函数执行之前(编译)就加载到目标程序中中去了。
优点:(1)静态库加载到应用程序中加载速度比较快。
(2)发布程序时因为静态库已经在app中,所以比较便捷。
缺点 (1)程序大
(2)链接时完整的拷贝到执行文件中,被多次使用就会有多份冗余拷贝。
(3)更新,部署,发布麻烦。
(b)动态库
在函数执行时动态的(临时)由目标程序调用。
优点:(1)程序小.
(2)链接时不复制,程序运行时,由系统调用到内存中供程序调用,系统只加载一次, 多个程序可共享,节省内存。
缺点:(1)与静态库相比的运行较慢.
(2)发布程序时需要提供依赖的动态库。
3.库的制作
静态库的制作 生成XXX.a 文件
(1)生成静态库.o文件
gcc filename.c -c
(2)生成XXX.a文件
rc rcs filenam.a filename.o 用XXX.o 文件生成XXX.a静态函数库文件
动态库的制作 生成 xxx。so文件
gcc -shared -fpic filename.c -o libfile.so
shared指定生成动态库
fpic,在目标程序编译的时候使用,生成位置无关的代码。
库的使用
静态库的使用
gcc mainfile.c -lfilenam -L ./ -o filejintaiku
-lfilenam是静态库名,-l是指定要用的动态库名,静态库名砍头去尾.
-L是指定查找动态库的路径,默认路径是usr/lib 或 usr/local/lib
动态库的使用指定有效路径
https://www.cnblogs.com/progamming/p/13043652.html
如果想用改变环境变量的的方法,并且永久的使用动态库,可以写一个脚本
脚本start.sh
export LD_LIBRARY_PATH=”LD_LIBRARY_PATH:/opt/”
./filedongtaiku
chmod +x start.sh 让脚本可以执行
gcc mainfile.c -lfile -L./ -o filedongtaiku