0. 何为交叉编译

  • 交叉编译一般指在A机器上使用B机器的编译工具链,编译出目标文件,然后在B机器上运行,A和B的机器语言不一样
  • 一般A机器为PC(x86架构),B机器为嵌入式单板计算机(ARM架构)

    1. 设置工程文件层次

    CMake工具实现交叉编译功能 - 图1

    2. 配置交叉编译工具链文件:CrossCompile.cmake

    ```cmake SET(CMAKE_SYSTEM_NAME Linux) # 该指令必须存在,其目的是设置目标机使用的操作系统名称,
    1. # 支持Linux,QNX,WindowsCE,Android等。如果没有操作系统,那么就写 Generic。

SET(CMAKE_C_COMPILER ) 设置交叉编译器C路径,示例如下:

SET(CMAKE_C_COMPILER /home/linux/rk3308_cross_toolchain/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc)

SET(CMAKE_CXX_COMPILER ) 设置交叉编译器C++路径,示例如下:

SET(CMAKE_CXX_COMPILER /home/linux/rk3308_cross_toolchain/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++)

  1. <a name="rb9Ro"></a>
  2. ## 3. CMakeList.txt
  3. - 与不采用交叉编译时的用法相同,它是cmake工具生成一个软件工程所依赖的文件
  4. <a name="RnyOd"></a>
  5. ## 4. 使用cmake命令行编译
  6. ```bash
  7. cd build
  8. cmake -DCMAKE_TOOLCHAIN_FILE=../CrossCompile.cmake ..
  9. make # 因测试环境为Linux环境,所以cmake组建的工程为GNU make相关文件,故使用make来编译工程

5. 参考资料