函数库一般分为静态库和动态库两种
- 动态库:使编译器对用户的程序进行动态链接
动态链接:拷贝的是动态库中当前程序所需代码的地址到可执行程序中的相关位置,可在执行时链接到动态库中的相关,即动态链接的可执行程序再运行时仍然依赖于动态库,若动态库缺失,程序则无法运行 - 静态库:使编译器对用户的程序进行静态链接
静态链接:直接把静态库文件中的所需代码拷贝到可执行文件中,链接成功后的可执行程序不依赖任何库即可正常运行
Linux下默认进行的是动态链接
ldd 脚本可查看列出动态库依赖关系
libc.so.6 表示用于动态链接的库为C动态库,libXXX.so.6 ,so为动态库后缀
可主动进行静态链接来观察
一般云服务器默认只有动态库,静态库需手动安装
yum install glibc-static libstdc++-static -y
主动静态链接
gcc test.c -o test-static -static
再次使用ldd提示不是动态链接的可执行程序
查看静态链接程序的文件属性
再查看一下动态链接的程序的文件属性