摘要: 本文主要对Arm Compiler 6的armclang的命令参数选项进行介绍。
关键字:Arm Compiler 6、编译器、armclang、mcu架构、处理器、优化级别
1. armclang编译参数
armclang是Arm Compiler 6中编译 C/C++和GNU语言的集成编译器。在armclang进行编译时以下参数是必须要指定的。
--target(目标)
-march(架构)
-mcpu(处理器)
-O(优化等级)
2. 编译参数详细介绍
2.1 指定目标
要指定目标,需使用--target,这个目标主要指是为AArch64 状态生成 A64 指令还是为 AArch32 状态生成 A32 和 T32 指令。
例如:
为 AArch64 状态生成 A64 指令:--target=aarch64-arm-none-eabi
为 AArch32 状态生成 A32或T32指令:--target=arm-arm-none-eabi
备注1:为 AArch32 状态生成A32或T32指令时,还要分别使用-marm或-mthumb。
2.2 指定架构
使用-march选项,为指定架构生成代码。支持的架构因所选目标不同而有差别。
要查看所选目标的所有支持架构列表,请使用-march=list;
2.3 指定处理器
使用-mcpu选项,为指定处理器生成代码。支持的处理器因所选目标不同而有差别。
要查看所选目标的所有支持处理器列表,请使用-mcpu=list;
备注:指定架构和指定处理器两个参数选项不能同时使用。如果是为特定的处理器进行编译,请使用-mcpu选项,可以得到适用于此处理器的最佳性能。但如果希望编译后的代码在特定架构上的一系列处理器上运行,请使用-march,代码可以在这个架构上的任何处理器上运行,但性能与指定单个处理器相比会收到不同程度的影响。
2.4 指定优化等级
使用-O选项,是指定编译的优化等级。不同优化等级对执行效率和代码有不同的影响。如果不明显指定,则默认为-O0,即不进行任何优化。此时的编译速度是最快的。
3. 举例
以编译hello.c文件为例,
在AArch64 状态 Armv8-A 架构下的编译:
armclang --target=aarch64-arm-none-eabi -march=armv8-a hello.c
在 AArch32 状态Armv8-R 架构下的编译:
armclang --target=arm-arm-none-eabi -march=armv8-r hello.c
在AArch64 状态Cortex®-A53处理器的编译:
armclang --target=aarch64-arm-none-eabi -mcpu=cortex-a53 hello.c
在AArch32 状态Cortex®-A53处理器的编译:
armclang --target=arm-arm-none-eabi -mcpu=cortex-a53 hello.c
Cortex-M4处理器编译:
armclang --target=arm-arm-none-eabi -mcpu=cortex-m4 hello.c
Cortex-M33处理器不使用DSP编译:
armclang --target=arm-arm-none-eabi -mcpu=cortex--m33+nodsp hello.c
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于凯发k8一触即发电子
凯发k8一触即发电子技术有限公司(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。凯发k8一触即发电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。
欢迎关注“凯发k8一触即发电子”公众号
了解更多研发工具软件知识