交叉編譯是A機器上編譯生成,運行在B機器上。兩個機子有不一樣的機器指令。
宿主機(host)是指使用交叉編譯工具鏈執行編譯的主機,通常配置較高,如PC主機;目標機(target)是指運行交叉編譯出的可執行程序的機器,通常資源有限,如嵌入式開發板。
工具鏈通常是由編譯器、鏈接器、解釋器和調試器組成,同時也包括目標機器的頭文件、庫文件等編譯資源。
命令html
# 經過 CMAKE_TOOLCHAIN_FILE 指定交叉編譯工具鏈文件 cmake -D CMAKE_TOOLCHAIN_FILE="/path/to/my-cmake-toolchain-file.cmake" ..
CMAKE_SYSTEM_NAME
目標機所在操做系統名稱linux
CMAKE_SYSTEM_PROCESSOR
架構
CMAKE_C_COMPILER
工具
CMAKE_CXX_COMPILER
ui
CMAKE_FIND_ROOT_PATH
spa
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
操作系統
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
.net
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
命令行
CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
調試
交叉編譯搜索模式
NEVER
表示不在你 CMAKE_FIND_ROOT_PATH 設置的目錄下進行查找ONLY
表示僅在你 CMAKE_FIND_ROOT_PATH 設置的目錄下進行查找BOTH
表示先在你 CMAKE_FIND_ROOT_PATH 設置的目錄下進行查找再查找全局路徑# Linux 交叉編譯工具鏈文件 set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs) set(CMAKE_STAGING_PREFIX /home/devel/stage) set(tools /home/devel/gcc-4.7-linaro-rpi-gnueabihf) set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
文件內容
編譯方法