球员,
我有一个项目,我已经为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
....
....
答案 0 :(得分:6)
我认为-marm意味着你的手臂没有拇指,请尝试删除-marm。
答案 1 :(得分:2)
没有实际代码很难说,但我有几点建议。
答案 2 :(得分:0)
对于一些编译器,在编译ARMv7时,thumb是默认设置。你确定你的原始可执行文件不是用拇指构建的吗?
尝试使用-mno-thumb进行构建,并查看代码大小是否增加。