您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么arm-linux-gnueabi-g ++-4.4总是生成“ 7-A”二进制文件?

为什么arm-linux-gnueabi-g ++-4.4总是生成“ 7-A”二进制文件?

您的编译器支持armv4t,问题是您的链接器必须将您的目标文件与libc,crt.o等其他文件链接才能创建可执行文件。但是,在您的工具链中,所有这些文件都已针对7-A进行了编译,因此,可执行文件最终也将成为一个文件。这是ubuntu cross工具链的问题,认情况下它们是armv7a。

如果 源文件,则会看到编译器输出正确的目标文件类型。

$ arm-linux-gnueabi-g ++-4.4 -mcpu = arm9tdmi -march = armv4t -O main.cpp -o CPPTest

$ readelf -A CPPTest
Attribute Section: aeabi
File Attributes
  Tag_cpu_name: "ARM9TDMI"
  Tag_cpu_arch: v4T
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_optimization_goals: Prefer Speed
  Tag_DIV_use: Not allowed

因此,工具链不仅仅是编译器,它的每个组件都需要配合使用。

其他 2022/1/1 18:14:54 有585人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶