做网站找云无限,长春公司做网站,网站建设电话营销话术,wordpress设置当前页面标题区别
使用静态库占用的磁盘空间相对比动态库要大。 如果多个可执行程序使用库中同一个函数#xff0c;那么链接静态库时同一个函数的代码会被复制多份#xff0c;而链接动态库只复制一份。动态库可共享且版本更新方便 静态链接库在程序编译的时候就被加载进来#xff0c;不…区别
使用静态库占用的磁盘空间相对比动态库要大。 如果多个可执行程序使用库中同一个函数那么链接静态库时同一个函数的代码会被复制多份而链接动态库只复制一份。动态库可共享且版本更新方便 静态链接库在程序编译的时候就被加载进来不能共享 动态链接库是在程序执行的时候加载可共享。库函数版本升级时直接替换动态库文件即可不需要重新编译源程序而如果更新了静态库则可执行程序需要重新编译。加载速度不一样 静态库在链接时就和可执行文件在一起了而动态库在加载或运行时才链接所以使用静态库时加载相对更快。程序运行时依赖动态库的存在。 静态链接的可执行文件不需要依赖其他的内容即可运行而动态链接的可执行文件必须依赖动态库的存在。在部署运行环境时必需拷贝动态库到指定路径下否则运行会报错。
注意事项
链接库的放置顺序
如下设置可编译成功
$ gcc -c main.c
$ gcc -static -o main main.o -lm但是如下设置编译报错
$ gcc -c main.c
$ gcc -static -lm -o main main.o
main.o: In function main:
main.c:(.text0x2f): undefined reference to exp
collect2: error: ld returned 1 exit status所以需要把具有引用关系的库放置在后面。
参考
https://zhuanlan.zhihu.com/p/71372182