【发布时间】:2011-05-05 16:22:21
【问题描述】:
伙计们,
我有一个为 ARM Cortex-A8 处理器编译的项目。我正在使用 GCC 来做到这一点。目前我的可执行文件的大小是 220.1 KB。现在我修改我的 makefile 并添加标志 -mthumb,makefile 行看起来有点像这样 -
gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon
我在我的所有 makefile 中进行了此更改并构建了我的项目,但我最终获得的可执行文件仍然是 220.1 KB。
我对命令行又做了一项更改,我添加了 -mthumb-interwork 选项
gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon
我再一次得到相同大小的可执行文件 220.1 KB。这样做时我错过了什么吗?
我写了一个小程序,找到两个数字中最小的一个,并使用以下命令行编译它
gcc main.c -o main
我得到一个 8.5 KB 的可执行文件
接下来,我做一个
gcc -mthumb main.c -o main
我仍然得到一个 8.5 KB 的可执行文件。
这里有什么问题?
我做了一个cat /proc/cpuinfo 来查看我的处理器是否真的支持拇指,我发现它确实支持。
我明白了-
Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
【问题讨论】:
-
-marm是-mthumb的计数器,gcc采用最后一个选项;这就是 dwelch 的 答案有效的原因。
标签: compilation arm thumb cortex-a