【发布时间】:2017-02-02 05:11:42
【问题描述】:
如何验证是否为 ARM 9 或 ARM11 编译了可执行文件? 我编译的应用程序如下: - arm-linux-gnueabihf-gcc -march=armv4t -mfloat-abi=hard -mfpu=vfp -marm -Wall sample.c -o sample
示例是简单 Hello-world 的 C 程序。
这是objdump -f 的输出,
Attribute Section: aeabi
File Attributes
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-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_VFP_args: VFP registers
Tag_ABI_optimization_goals: Aggressive Speed
Tag_CPU_unaligned_access: v6
【问题讨论】:
-
好像是 arm11 的...你能告诉我如何为 arm9 编译它吗?
-
en.wikipedia.org/wiki/List_of_ARM_microarchitectures。 arm9 是 armv4t。 arm11 是 armv6t。但是会整天执行 armv4t 指令。 fpa 在 arm7 天左右,而不是 vfp。根据该维基百科页面,vfp 出现在 arm10 天。因此,尽管信息很容易获得,但您的猜测是一致的,没有理由询问 stackoverflow。
-
你如何为arm9编译好,你打算使用的arm9上是否有浮点单元?直到最近,它们还是相当罕见的,所以可能不是,几乎所有东西都运行 armv4t 指令拇指或手臂(当然不是 cortex-ms),所以没有理由改变它。你可以只用软浮点编译 armv4t,除了大部分代码是芯片特定的并且无论如何都不会运行,指令集至少会一直移植到家族树。
-
更改命令行选项不会为不同的芯片(外围设备等)重写您的软件。如果这一切都在操作系统之上运行,那么你就有一半的机会。
-
我已经使用标志 armv4t arm-linux-gnueabihf-gcc -march=armv4t -mfloat-abi=hard -mfpu=vfp -marm -Wall sample.c -o sample 进行了编译