Tag: gnu toolchain

为什么在编译x86_64上的静态库时,gcc不会隐式提供-fPIC标志

编译共享对象时遇到了很多问题,这些对象与静态库静态链接。 这个问题只出现在x84_64平台上。 当在x86_32上做同样的编译工作时,我没有任何问题。 也许这是一个操作系统特定的GCCconfiguration的事情,但我的研究表明,它的GCC如何在x86_64平台上工作。 无论如何,我在Ubuntu 10.04 x86_64上使用gcc 4.4.3。 问题是如何解决的?确保所有的静态库依赖关系都是用-fPIC编译的。 问题1: -fpic和-fPIC(显然-fPIC在x86上生成更多指令)有什么区别? 为什么后面的types在x86_64上下文中更相关? 问题2:我的假设是,当链接到静态代码时,您在链接时将函数硬连接到二进制文件,为什么它需要“位置独立代码”机制提供的间接级别? 问题3:现在,如果x86不需要-fpic / -fPIC来将共享对象与静态归档链接起来,为什么在x86_64中需要它? 问题4:即使需要,为什么不提供隐含的? 我认为改变应该是一个很大的禁忌