linux 下的静态库与动态库的区别 1
什么是库 在windows 平台和linux 平台下都大量存在着库
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行
由于 windows 和linux 的本质不同,因此二者库的二进制是不兼容的
库的种类 linux 下的库有两种:静态库和共享库(动态库)
二者的不同点在于代码被载入的时刻不同
静态库的代码在编译过程中已经被载入可执行程序,因此体积较大
共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小
库存在的意义 库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议
现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常
共享库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例
库文件是如何产生的在linux 下 静态库的后缀是
a,它的产生分两步 Step 1
由源文件编译生成一堆
o 里都包含这个编译单元的符号表 Step 2
ar 命令将很多
a,成文静态库 动态库的后缀是
so,它由 gcc 加特定参数编译产生
例如: $ gcc -fPIC -c *
c $ gcc -shared -Wl,-soname, libfoo
1 -o libfoo
库文件是如何命名的,有没有什么规范 在linux 下,库文件一般放在/usr/lib /lib 下, 静态库的名字一般为 libxxxx
a,其中 xxxx 是该 lib 的名称 动态库的名字一般为 libxxxx
minor,xxxx 是该 lib 的名称,major 是主版本号, minor 是副版本号 6
如何知道一个