您的编译器支持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
因此,工具链不仅仅是编译器,它的每个组件都需要配合使用。