这里介绍几个常用的几个与arm相关的GCC命令行参数。完整的描述参见GCC在线文档:http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
-march=name, 指定目标的处理器构架,例如armv7-a, armv8-a等,参考gcc/config/arm/arm-arches.def。
-mcpu=name, 指定目标处理器,这是具体的处理器型号,例如cortex-a9,参考gcc/config/arm/arm-cores.def。
-mtune=name, 指定特定的优化参数给当前编译目标。参考gcc/config/arm/arm.c 里面的各种tune_params。
以上参数可以组合设置,但是如果出现冲突,例如指定的cpu和构架不匹配,编译器会给出警告信息,相应的参数会被另一个覆盖。
-mthumb
-marm 选择使用arm还是thumb指令集来编译源代码。thumb状态下,代码体积更小,但是相应会带来性能上的这种。
-mfpu=name,指定目标处理器上的浮点运算硬件。
所有目标参见
关于这些组合参数带来的影响,请参考gcc关于arm后端的源代码,也可以去检查生成的相关RTL(-fdump-rtl-pass=filename)和汇编代码。
-fdump-rtl-
=
关于如何使用GCC调试你的程序,请参考GCC官方调试选项文档:http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
还有其他的欢迎大家积极讨论。