Linux可执行文件动态编译和静态编译

动态编译

通过源码编译的过程中执行./configure && make && make install,在默认情况下都是进行动态编译。

Linux的可执行文件在链接过程中可以通过使用动态链接,在可执行文件加载过程中链接第三方的SO库文件,这种使用动态链接的可执行文件编译过程称之为动态编译。

优点:

  1. 编译速度快;
  2. 编译出来的文件体积小;
    缺点:
  3. 如果系统缺少相关SO库就会无法执行。

静态编译

通过源码编译的过程中执行./configure时增加参数CFLAGS="-static",即./configure CFLAGS="-static" && make && make install,即可进行静态编译。

Linux可真行文件静态编译会在链接过程中链接所有用到的第三方.a库文件,哪怕只用到第三方库中其中几个函数,也会将整个第三方库链接过来。

优点:

  1. 执行过程中不需要依赖任何SO库。
    缺点:
  2. 编译速度慢;
  3. 编译出来的文件体积大;

你可能感兴趣的:(Linux可执行文件动态编译和静态编译)