摘要: 本文主要對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
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關于億道電子
億道電子技術有限公司(英文名稱: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 工具等等。億道電子憑借多年的經驗積累,真正的幫助客戶實現了讓研發更簡單、更可靠、更高效的目標。

歡迎關注“億道電子”公眾號
了解更多研發工具軟件知識

首頁 > 新聞資訊
