Make/CMake工具用於構建CMakeLists.txt、Makefile檔案。CMakeLists.txt、Makefile檔案中涉及的遷移內容主要是用於指定資料類型、處理器架構、代碼產生等編譯選項。本文介紹從x86平台遷移到倚天雲端服務器時,如何對這些檔案進行相應修改。
C/C++添加-mabi=lp64編譯選項
-m64是x86平台應用程式編譯選項,編譯後產生的代碼將運行在64位元模式下。但是在倚天雲端服務器上不支援該選項,需將-m64修改為-mabi=lp64。
C/C++強制添加-fsigned-char編譯選項
char類型在x86架構和ARM架構下預設是否帶符號不一致,在x86架構下預設為signed char(有符號字元型),在倚天雲端服務器預設為unsigned char(無符號字元型)。x86架構代碼遷移到倚天雲端服務器時,需要強制指定char類型變數為signed char(有符號字元型)。
C/C++指定處理器架構選項
在倚天雲端服務器上編譯時間,需要將處理器架構的選項march mtune mcpu修改為-march=armv8-a+sve2 -mcpu=neoverse-n1,使編譯器能夠按照倚天雲端服務器的微架構和指令集產生可執行程式,以提升效能。
樣本說明
從x86平台遷移Make/CMake構建檔案到倚天雲端服務器時,具體代碼修改樣本如下所示。
原始碼:
CFLAGS=-g3 -O2 -DNDEBUG -m64 -Wall -march=corei7修改後代碼:
# GCC 10(針對 Neoverse N1)
CFLAGS=-g3 -O2 -DNDEBUG -mabi=lp64 -Wall -march=armv8-a+crc+sve2 -mcpu=neoverse-n1 -fsigned-char
# GCC 11(針對 Neoverse N2)
CFLAGS=-g3 -O2 -DNDEBUG -mabi=lp64 -Wall -march=armv8-a+crc+sve2 -mcpu=neoverse-n2 -fsigned-char