linux-如何仅编译ARM32二进制文件(无经验)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-如何仅编译ARM32二进制文件(无经验),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含898字,纯文字阅读大概需要2分钟。
内容图文
![linux-如何仅编译ARM32二进制文件(无经验)](/upload/InfoBanner/zyjiaocheng/949/48cfd79702cb4916bafebeed129d09a0.jpg)
是否存在GCC配置,该配置将生成仅包含ARM32代码的可执行文件?
我知道-marm开关告诉编译器不要产生Thumb代码,但是它仅适用于程序的用户代码,而初始化例程(例如_start,frame_dummy等)仍然包含Thumb指令.
我在Linux x86-64系统上使用Linaro交叉编译器工具链(arm-linux-gnueabihf-).
编辑:
在重新编译工具链时,我自己找到了(可能的)解决方案.编码为Thumb的初始化例程是glibc的一部分,可以在目标文件crt1.o,crti.o和crtbegin.o中找到.我没有尝试重新编译它,但是可能存在一个配置值,该值强制将整个libc编码为ARM32.
解决方法:
Is there a GCC configuration which will produce an executable only containing ARM32 code? I know the
-marm
switch …
您的主要问题是该代码(例如_start)不是由编译器生成的,而是已经预先编译的代码(如Thumb代码).
如果要将这些功能设置为非拇指代码,则必须用自己的文件(非拇指)“替换”现有文件(拇指).
(您不必覆盖现有文件,但是可以指示链接程序在其他目录中搜索这些文件.)
如果找不到预建的非拇指文件,则必须自己创建它们(可能需要很多工作).
内容总结
以上是互联网集市为您收集整理的linux-如何仅编译ARM32二进制文件(无经验)全部内容,希望文章能够帮你解决linux-如何仅编译ARM32二进制文件(无经验)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。