Has*_*yed 59 gcc compilation dynamic-linking gnu-toolchain static-linking
编译静态链接静态库的共享对象时遇到了很多问题.此问题仅出现在x84_64平台上.在x86_32上进行相同的编译工作时,我没有任何问题.
也许这是一个特定于操作系统的GCC配置,但我的研究表明它是如何在x86_64平台上运行GCC的.无论如何,我在Ubuntu 10.04 x86_64上使用gcc 4.4.3.
问题是如何解决的?...确保使用-fPIC编译所有静态库依赖项.
问题1: -fpic和-fPIC之间有什么区别(显然-fPIC会在x86上生成更多指令)?为什么后一种类型在x86_64上下文中更相关?
问题2:我的假设是,当您链接静态代码时,您在链接时将函数硬连接到二进制文件中,为什么它需要"位置无关代码"机制提供的间接级别?
问题3:现在如果x86不需要-fpic/-fPIC来链接共享对象与静态存档,为什么在x86_64中需要它?
问题4:即使需要,为什么不隐式提供?我认为突破性变化应该是一个很大的禁忌
F'x*_*F'x 48
另外,我的建议是:如果你需要担心,你做错了(或者你喜欢学习艰难的方式,这很好,因为你会从经验中获得更多).编译系统(libtool,cmake,无论你使用什么)都应该为你做.
| 归档时间: |
|
| 查看次数: |
18194 次 |
| 最近记录: |