gpt4 book ai didi

gcc - armv7生成的ELF文件,armv6生成的.o文件,同时使用-march=armv6,为什么?

转载 作者:行者123 更新时间:2023-12-04 13:02:52 24 4
gpt4 key购买 nike

我正在尝试将我的程序编译为 armv6,但 ELF 文件是为 armv7 构建的,即使我使用 -march=armv6选项。全部 .o文件已经编译到armv6,只有ELF文件是错误的。

基本上我是这样编译的:
arm-linux-gnueabihf-g++ -static -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm -Wa,-march=armv6 -o "Bridge"
检查所有 .o我得到这个文件:
$ readelf -a -W Bridge.o | grep Tag
Tag_CPU_name: "6"
Tag_CPU_arch: v6
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_FP_arch: VFPv2
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_VFP_args: VFP registers
Tag_ABI_optimization_goals: Aggressive Speed
Tag_CPU_unaligned_access: v6

但是检查ELF文件:
$ readelf -a -W Bridge | grep Tag
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3
Tag_Advanced_SIMD_arch: NEONv1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_rounding: Needed
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_VFP_args: VFP registers
Tag_CPU_unaligned_access: v6

我使用的是 Linaro GCC 7.2.1,我也尝试过旧版本和不同的编译标志组合。有人能告诉我如何编译 armv6 ELF 文件吗?

最佳答案

问题确定。
Linaro 工具链二进制文件能够为 armv6 平台编译目标文件,但是,链接器实际上并没有解释这个标志。

原因:工具链是用 armv7 配置编译的。

解决方案:我下载了 Linaro 工具链的源代码,将其配置为支持 armv6 并使用 cross-ng-tool 进行编译。

关于gcc - armv7生成的ELF文件,armv6生成的.o文件,同时使用-march=armv6,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51368266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com