CMake 交叉編譯
交叉編譯就是說在平台 A (宿主機)上編譯出可以在平台 B (目標機) 上運行的程序,比如在 x86 上編譯 ARM 程序
要交叉編譯首先要去下載目標平台的工具鏈,比如要編譯 ARM 程序就應該去下載 Linaro 提供的工具鏈
交叉編譯時,我們的 CMake 文件也需要做一些改動
指定目標機的操作系統和處理器架構
SET (CMAKE_SYSTEM_NAME Linux)
SET (CMAKE_SYSTEM_PROCESSOR aarch64)
更換編譯器
CMake 提供一些變量來控制程序的編譯和鏈接:
CMAKE_C_COMPILER
:編譯 C 代碼的程序CMAKE_CXX_COMPILER
:編譯 C++ 代碼的程序
SET (CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
SET (CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")
更換編譯器前應該更改 PATH 環境變量,將你的交叉編譯編譯器路徑放進去,否則 CMake 是沒法找到它們的
將以上指令放到一個 xxx.cmake
中,比如 aarch64-linux-gnu.toolchain.cmake
,然后以 cmake -DCMAKE_TOOLCHAIN_FILE=aarch64-linux-gnu.toolchain.cmake ..
的形式使用