Published on

Linux下面的.a和.so文件

Authors
  • avatar
    Name
    祝你好运
    Twitter

坚持写博客是有助于个人成长的,新的博客,新的起点,记录生活。

.a文件

.a文件是静态链接库文件,也就是编译,链接时候链接进去的库。正常的使用方法就是一堆头文件和一个.a文件,要用这个库的地方只需要把头文件引近来,就可以直接调用里面的函数。

优点是:

  1. 保密,别人写的东西给我用,又不想让我看源代码,就给我一个静态库
  2. 相比于动态链接库有一定的性能提升。因为程序执行的时候就不需要去加载动态链接库
  3. 不会出现找不到动态链接库的情况(因为函数实现已经编译进去了)

缺点:

  1. 可执行程序会变大
  2. 当里面的函数实现有修改的话,需要重新编译.a文件,而且用到.a文件的程序也要重新编译。

.so文件

.so文件是动态链接库文件(shared object),就是在可执行程序执行的时候去动态的查找函数实现的地方。

优点:

  1. 保密。
  2. 缩小可执行程序的体积。

缺点:

  1. 可执行程序在运行的时候可能找不到这个动态链接库,然后就只能跪了。
  2. 有可能出现版本不兼容。

剩下的就是按照需求使用.a或者.so文件了。另外,dylib文件是BSD风格的动态链接库。和.so还有.dll类似的概念。