1
4
如果对象模块将在共享库中使用,则始终需要“位置独立代码”。它高度依赖于平台,并且会产生一些开销。 您必须在amd64而不是x386上显式指定它的原因只是它恰好是x86的默认值,而不是amd64。 还要注意“-fpic”和“-fpic”之间的区别:
|
2
4
好的,答案在这里详细描述: http://www.technovelty.org/code/c/amd64-pic.html . 解释的基本要点是i386体系结构隐式地取消引用每个函数的帧指针(在链接页的最后一段中解释)。这个过程会产生一些额外的开销,所以在新的64位体系结构中,这种取消引用的开销被作为优化消除了。 从链接的角度来看,这种优化的结果是,除非64位代码显式编译为位置无关的代码,否则它将生成硬编码的代码,其中包含执行上下文的偏移量。 这是对链接页中内容的不完美解释,但对我来说已经足够了。 |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Bastien L. · 多Linux Grafana集成 2 年前 |