配置 Windows CLion 为 PetaLinux 虚拟机进行远程交叉编译
前言
- 本文目标: 使用Windows主机的Clion,为Petalinux的开发板,搭建交叉编译的环境,使用petalinux的sdk携带的交叉编译工具链以及库函数
核心原则
我们最终成功的核心是采用了 CMake 工具链文件 (Toolchain File) 的方案。这种方法最为明确和可靠,它不再依赖 CLion 对环境脚本 (Environment file
) 的不确定性解析,而是通过一个文件,用 CMake 的“母语”精确地定义了整个交叉编译环境。
第一步:准备 Linux 虚拟机
确保你的 Linux VM 已经安装好所有必需的软件。
PetaLinux SDK: 确认已安装在你的 home 目录(例如
/home/kuang/petalinux_sdk/2023.2
)。SSH 服务器: 用于 CLion 远程连接。
1
sudo apt install openssh-server rsync
构建工具: CLion 远程构建需要
cmake
和make
。1
sudo apt install cmake make
网络: 建议将虚拟机的网络设置为桥接模式 (Bridged Mode),并记录下其 IP 地址。
第二步:创建 CMake 工具链文件 (关键步骤)
这是整个配置的“大脑”。在你的 Linux VM 中创建一个名为 petalinux_toolchain.cmake
的文件。
创建文件:
1
2# 在 VM 的终端中执行
nano ~/petalinux_toolchain.cmake粘贴以下内容: 将下面的代码完整地、原封不动地复制进去。
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 使用我们创建的工具链文件。
配置远程工具链 (
Toolchains
):- 进入
File > Settings > Build, Execution, Deployment > Toolchains
。 - 新建一个
Remote Host
工具链。 - 配置 SSH
Credentials
,连接到你的 Linux VM。 - 将
Environment file
字段留空。 - 将
C Compiler
和C++ 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++
)
- 进入
配置 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
第四步:清理、加载并开始开发
- 点击
OK
保存所有设置。 - 在 CLion 主菜单,执行
Tools > CMake > Reset Cache and Reload Project
。这是应用全新工具链配置的必要步骤。 - 开始你的开发工作流:
- 构建 (Build): 在 CLion 中点击锤子图标。代码会自动同步到 VM 并进行交叉编译。
- 部署 (Deploy): 构建成功后,在 VM 的终端中,使用
scp
将生成的可执行文件(位于项目目录的cmake-build-remote-release
中)传送到 Zynq 开发板。 - 运行 (Run): 通过 SSH 登录到 Zynq 开发板,运行你的程序。