Linux静态链接
程序员文章站
2022-06-03 08:38:52
...
Linux静态链接简介
什么是静态编译?
静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。
这样做的优点是编译成功的可执行文件可以独立执行,而不需要再向外部要求读取函数库的内容。
缺点是虽然可执行文件可以独立执行,但因为函数库是直接整合到可执行文件中,因此若函数库升级时,整个可执行文件必须要重新编译才能将新版的函数库整合到程序中。
编译方法
使用gcc选项-static可以禁止使用动态链接库,即使用静态链接的方式。
示例代码:
#include<stdio.h>
int main(){
printf("hello world.\n");
return 0;
}
编译命令:
gcc -static -o test test.c
编译出错:cannot find -lc
编译此程序需要用到libc库文件,而系统中无法找到libc的静态库文件,需要下载安装:
yum install glibc-static
再次编译,成功!
使用动态链接和静态链接编译的程序大小对比
使用动态链接:
使用静态链接:
上一篇: windows通过PDH获取网卡流量