10. zynq应用开发--camke编译
使用SDK工具
如果只做 Linux 应用开发,只需要一个 sdk.sh 文件即可,可以脱离 Petalinux 和 Vitis,也可以编译其三方的应用,可以说一劳永逸。
- 配置根文件系统
- petalinux-config -c rootfs
- 编译SDK
- petalinux-build --sdk
- Linux主机或者虚拟机需要连接网络,如果在之前设置离线编译的此时应该打开网络使能,而后可以关闭网络使能
- ![[Pasted image 20241224165450.png]]
- petalinux-package --sysroot
petalinux-package --sysroot
是PetaLinux工具套件中的一个命令,用于生成一个系统根文件系统(sysroot),这个sysroot包含了为目标平台(如Xilinx的Zynq或Zynq UltraScale+ MPSoC等)编译的库、头文件和其他必要的文件
- petalinux-build --sdk
- 安装SDK
- ./project/images/linux/sdk.sh -d path
- 默认在petalinux路径
- ./project/images/linux/sdk.sh -d path
- 使用SDK
- source 设置环境变量
- source …/sdk/environment-setup-aarch64-xilinx-linux
- 查看环境变量
- aarch64
- echo $CC
- echo $CXX
- source 设置环境变量
使用cmake
- 修改CMakeLists.txt
- VERSION : 选择编译版本
- project:自定义项目名称
- CMAKE_SYSTEM_PROCESSOR :
- MPSOC 64位:aarch64
- zynq :arm
- CMAKE_C_COMPILER : 根据实际修改(echo $CC)
- CMAKE_CXX_COMPILER: 根据实际修改(echo $CXX)
- CMAKE_FIND_ROOT_PATH :根据实际修改(echo $CC)
- CMAKE_C_FLAGS :根据实际修改(echo $CC)
cmake_minimum_required(VERSION 3.10)
# 定义项目名称
project(MyProgram)
# 设置交叉编译器
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER aarch64-xilinx-linux-gcc)
set(CMAKE_CXX_COMPILER aarch64-xilinx-linux-g++)
set(CMAKE_FIND_ROOT_PATH /media/kemao/linux/pkg_install/sdk/sysroots/aarch64-xilinx-linux)
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_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a+crc -mtune=cortex-a72.cortex-a53 -g -Wall -O2")
# 添加可执行文件
add_executable(${PROJECT_NAME} hello.c)
# 调试目标
add_custom_target(debug
COMMAND aarch64-xilinx-linux-gdb ${PROJECT_NAME}
)
使用CMake
构建项目:
- 安装:sudo apt-get install cmake
- 检查:cmake --verison
- 创建构建目录:
mkdir build
cd build
- 运行
cmake
生成构建文件:
cmake ..
- 构建项目:
make