GCC编译静态库的-fPIC选项
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
GCC编译静态库的-fPIC选项
背景
通常在linux下用gcc编译动态库时都会加上一个-fPIC
选项来生成位置无关代码,但是从来没有人明确的说过是不是要在编译静态库时也加上-fPIC
选项。我在这篇文章中就给出一个明确的结论并讲述原理。
介绍-fPIC
的原理的文章网上汗牛充栋这里不再赘述。
原理分析
众所周知,静态库其实是一系列.o文件的打包,将.o文件制作成静态库的过程是不会发生链接的。
所以链接静态库就约等于将静态库解包后的.o文件一个一个全部链接。
-fPIC
选项的生效阶段在编译阶段,使用-fPIC
选项编译的.o文件会生成位置无关的代码
如果一个动态库需要链接一个静态库,那么就相当于动态库去链接一系列的.o文件,而编译动态库所需的.o文件时一般是推荐使用-fPIC
编译选项的。
结论
如果你的静态库可能会被动态库使用,那么静态库编译的时候就也需要-fPIC
选项。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献4条内容
所有评论(0)