您的编译器支持armv4t,问题是您的链接器必须将您的目标文件与libc,crt.o等其他文件链接才能创建可执行文件。但是,在您的工具链中,所有这些文件都已针对7-A进行了编译,因此,可执行文件最终也将成为一个文件。这是ubuntu
cross工具链的问题,默认情况下它们是armv7a。
如果 仅编译 源文件,则会看到编译器输出正确的目标文件类型。
$ arm-linux-gnueabi-g ++-4.4 -mcpu = arm9tdmi -march = armv4t -O -c
main.cpp -o CPPTest
$ readelf -A CPPTestAttribute Section: aeabiFile 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
因此,工具链不仅仅是编译器,它的每个组件都需要配合使用。



