0
点赞
收藏
分享

微信扫一扫

linux库文件

船长_Kevin 2022-05-05 阅读 57
linux

windows静态库文件扩展名.lib 动态库文件扩展名.dll

linux 静态库.a 动态库.so  

都是将函数封装在一起编译后供自己或他人调用,好处是编译后的库文件看不带源代码,可以保密

linux库文件一般存在  /lib 和/usr/lib   64位下也有可能存在 /usr/lib64 下

linux库有两种 一种静态库lib**.a 一种共享库lib**.so

lib**.a 静态库 => 链接阶段 =>  复制一份到 可执行程序内部

lib**.so  共享库  => 链接阶段 =>   标记库的位置然后使用的时候调用 

静态库是多个.o文件打包

ar命令 将所有的.o文件打包成静态库

c是创建库     v是详细过程

静态库创建

先写好函数文件,用gcc -c 加函数文件 编译成.o文件 然后用ar crv libfoo.a +文件名.o+文件名.o命令将所有的.o 文件打包到libfoo.a 中,将所有的函数声明写进一个头文件中,将头文件和打包好的lib**.a 文件放进同一个文件夹里,写进一个main函数,然后编译链接 gcc -o main main.c -L.(接当前文件夹) -l(链接哪个**库文件) foo

创建共享库:

生成.o以后,gcc -shared -fPIC -o libfoo.so min.o max.o 

需要把生成的libfoo.so共享库移动到 /usr/lib 位置  sudo mv libfoo.so  /usr/lib

然后再gcc -o main main.c -lfoo  直接使用   

静态库和动态库的区别: 1.静态库在连接时将所用到的函数包含到最终生成的可执行程序中;共享库不会被包含到可执行文件中,只做标记,在运行程序才动态加载,所以共享库体积小

 

举报

相关推荐

0 条评论