配置 Windows CLion 为 PetaLinux 虚拟机进行远程交叉编译

前言

  • 本文目标: 使用Windows主机的Clion,为Petalinux的开发板,搭建交叉编译的环境,使用petalinux的sdk携带的交叉编译工具链以及库函数

核心原则

我们最终成功的核心是采用了 CMake 工具链文件 (Toolchain File) 的方案。这种方法最为明确和可靠,它不再依赖 CLion 对环境脚本 (Environment file) 的不确定性解析,而是通过一个文件,用 CMake 的“母语”精确地定义了整个交叉编译环境。


第一步:准备 Linux 虚拟机

确保你的 Linux VM 已经安装好所有必需的软件。

  1. PetaLinux SDK: 确认已安装在你的 home 目录(例如 /home/kuang/petalinux_sdk/2023.2)。

  2. SSH 服务器: 用于 CLion 远程连接。

    1
    sudo apt install openssh-server rsync
  3. 构建工具: CLion 远程构建需要 cmakemake

    1
    sudo apt install cmake make
  4. 网络: 建议将虚拟机的网络设置为桥接模式 (Bridged Mode),并记录下其 IP 地址。


第二步:创建 CMake 工具链文件 (关键步骤)

这是整个配置的“大脑”。在你的 Linux VM 中创建一个名为 petalinux_toolchain.cmake 的文件。

  1. 创建文件:

    1
    2
    # 在 VM 的终端中执行
    nano ~/petalinux_toolchain.cmake
  2. 粘贴以下内容: 将下面的代码完整地、原封不动地复制进去。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 1. 设置目标系统信息
    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_SYSTEM_PROCESSOR arm)

    # 2. 设置 Sysroot (指向目标板的库和头文件)
    set(CMAKE_SYSROOT /home/kuang/petalinux_sdk/2023.2/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi)

    # 3. 指定交叉编译器 (指向能在x86虚拟机上运行的程序)
    set(CMAKE_C_COMPILER /home/kuang/petalinux_sdk/2023.2/sysroots/x86_64-petalinux-linux/usr/bin/arm-xilinx-linux-gnueabi/arm-xilinx-linux-gnueabi-gcc)
    set(CMAKE_CXX_COMPILER /home/kuang/petalinux_sdk/2023.2/sysroots/x86_64-petalinux-linux/usr/bin/arm-xilinx-linux-gnueabi/arm-xilinx-linux-gnueabi-g++)

    # 4. 配置查找行为 (强制只在Sysroot中查找)
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

    # 5. 设置关键的编译标志 (解决浮点数ABI不匹配问题)
    set(CMAKE_C_FLAGS_INIT "-mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9" CACHE STRING "Initial C flags")
    set(CMAKE_CXX_FLAGS_INIT "-mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9" CACHE STRING "Initial CXX flags")

第三步:配置 Windows CLion

现在,我们让 CLion 使用我们创建的工具链文件。

  1. 配置远程工具链 (Toolchains):

    • 进入 File > Settings > Build, Execution, Deployment > Toolchains
    • 新建一个 Remote Host 工具链。
    • 配置 SSH Credentials,连接到你的 Linux VM。
    • Environment file 字段留空
    • C CompilerC++ Compiler 指向虚拟机上系统默认的编译器 (例如 /home/kuang/petalinux_sdk/2023.2/sysroots/x86_64-petalinux-linux/usr/bin/arm-xilinx-linux-gnueabi/arm-xilinx-linux-gnueabi-gcc/home/kuang/petalinux_sdk/2023.2/sysroots/x86_64-petalinux-linux/usr/bin/arm-xilinx-linux-gnueabi/arm-xilinx-linux-gnueabi-g++)
  2. 配置 CMake Profile (CMake):

    • 进入 File > Settings > Build, Execution, Deployment > CMake

    • 新建或编辑一个 Profile (例如 Remote-Release)。

    • Toolchain: 选择你刚刚创建的远程工具链。

    • CMake options: 只填写以下内容,指向你在 VM 上创建的工具链文件:

      1
      -DCMAKE_TOOLCHAIN_FILE=/home/kuang/petalinux_toolchain.cmake

第四步:清理、加载并开始开发

  1. 点击 OK 保存所有设置。
  2. 在 CLion 主菜单,执行 Tools > CMake > Reset Cache and Reload Project。这是应用全新工具链配置的必要步骤。
  3. 开始你的开发工作流
    • 构建 (Build): 在 CLion 中点击锤子图标。代码会自动同步到 VM 并进行交叉编译。
    • 部署 (Deploy): 构建成功后,在 VM 的终端中,使用 scp 将生成的可执行文件(位于项目目录的 cmake-build-remote-release 中)传送到 Zynq 开发板。
    • 运行 (Run): 通过 SSH 登录到 Zynq 开发板,运行你的程序。