跳到主要内容

交叉编译

交叉编译器 是一种在 主机平台(如 Ubuntu 或虚拟机)上运行,但用于生成 目标平台(如 ARM、MIPS 等架构)可执行文件的编译工具由于开发板资源有限,Buildroot 默认不支持本地编译 C 程序,因此需要使用交叉编译工具链。交叉编译器默认存放在 <SDK 目录>/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin 目录下。接下来将介绍如何配置交叉编译器来编译 C 程序。

1. 设置交叉编译工具链

  1. 首先设置交叉编译工具的环境变量,如果需要永久生效,编辑配置文件(如 .bashrc.profile)。

    vim ~/.bashrc 
  2. 添加工具链路径,将交叉编译工具的路径添加到系统的 PATH 环境变量中:

    export PATH=/home/ubuntu/luckfox-lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin:$PATH
    • 注意:请根据自己的 SDK 路径填写
  3. 更新环境变量,执行以下命令使配置生效:

    source ~/.bashrc  
  4. 使用交叉编译器编译程序。

    arm-none-linux-gnueabihf-gcc gpio.c -o gpio
  5. 最后将可执行文件传输到开发板。

    scp gpio root@192.168.10.103:/root
    • 注意:请根据自己的实际 IP 地址填写

2. CMake

  1. 编写 CMakeLists.txt 文件。

    cmake_minimum_required(VERSION 3.10)

    project(GpioProject)

    set(CMAKE_C_COMPILER /home/ubuntu/luckfox-lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc)

    add_executable(gpio gpio.c)
  2. 新建 build 文件夹。

    mkdir build && cd build
  3. 编译程序。

    cmake ..
    make