Linux
发布时间:2022-04-01 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何避免二进制文件中的STT_GNU_IFUNC符号?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
我需要部署到Red Hat 4.1.2框(具有 gcc 4.1.2).我在Ubuntu 11.10上使用GCC 4.6.1进行开发.不幸的是,我的构建过程创建的一些二进制文件在RedHat机器上不可用.原因似乎是ABI变化,根据 another Stackoverflow question引入STT_GNU_IFUNC符号.有没有办法阻止导出任何这样的符号,以
便我的二进制文件可以使用旧的ABI?我
我需要部署到Red Hat 4.1.2框(具有
gcc 4.1.2).我在Ubuntu 11.10上使用GCC 4.6.1进行开发.不幸的是,我的构建过程创建的一些二进制
文件在RedHat机器上不可用.原因似乎是ABI变化,根据
another Stackoverflow question引入STT_GNU_IFUNC符号.有没有办法阻止导出任何这样的符号,以
便我的二进制
文件可以使用旧的ABI?我
使用NR_527_11845@在我的二进制
文件中查找“i”类型的任何符号,但
没有找到.
我问这个是因为我构建的其他二进制文件以及一些第三方库(tbb,boost)都没有使用新的ABI,所以在RedHat机器上运行正常.
希望很清楚.提前致谢.
通常,UNIX系统
支持向后二进制兼容性(在旧机器上构建的二进制
文件继续在较新的机器上运行),但反之则不然.您不能指望在新系统上构建的二进制
文件可以在较旧的系统上运行. STT_GNU_IFUNC只是您遇到的许多问题中的第
一个.
如果需要在较旧的机器上构建二进制文件,请在较旧的机器上运行,请参阅this文档.
曾经有过“apgcc:一个GCC包装器来制作便携式二进制文件”,这使得这很容易(从上面引用),但似乎已经不见了;-(
最简单的选择是在旧机器上构建(我曾经在RedHat 6.2上构建,并且生成的二进制文件随处可见).您不必在物理计算机上实际运行RH-6.2,只需将其置于VM中即可.
另一个相对容易的选择是在chroot中构建,再次使用旧版本的工具和库(例如rH-6.2).
大佬总结
以上是大佬教程为你收集整理的linux – 如何避免二进制文件中的STT_GNU_IFUNC符号?全部内容,希望文章能够帮你解决linux – 如何避免二进制文件中的STT_GNU_IFUNC符号?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。