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选项。
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e
added ecosystem file for PM2 5 年前
5def40a3
Add host customization support for the NodeJS version 5 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)