所谓交叉编译就是让c能在ubuntu环境下编译,然后在board环境下运行。
第一步,安装环境
以zedboard为例,我们先把c++环境给编译上,先找到我们在ubuntu的工程目录,然后运行
//这是清理的方法,编译出错的时需要用到 petalinux-build -x mrproper -f petalinux-build --gcc因为会要调用网络,各种问题可能会导致编译不成功,这时候我们需要配置一下镜像:
找到项目文件中的petalinux-config文件,在末
${CC} adv7511_init.c -o adv7511_init -static # 静态链接,生成体积较大的独立可执行文件尾添加一行配置命令用来配置镜像
SSTATE_MIRRORS ?= "file://.* http://petalinux.xilinx.com/sswreleases/rel-v2020/arm/sstate-cache/"等待安装完毕之后,试着运行一下,看看有没有环境:
# 手动加载SDK的环境设置脚本 source /opt/pkg/petalinux/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi # 验证${CC}变量是否已设置(应该会打印出类似 'arm-xilinx-linux-gnueabi-gcc --sysroot=...' 的内容) echo ${CC} # 验证PATH中是否包含了编译器路径 which arm-xilinx-linux-gnueabi-gcc如果没有问题,之后我们把环境固化了,确保之后我们调用环境不用每次都设置一下环境变量
echo "alias petev='source /opt/pkg/petalinux/environment-setup-cortexa9t2hf-neon-xilinx-linux-gnueabi'" >> ~/.bashrc source ~/.bashrc之后就可以编译我们的代码了:
${CC} adv7511_init.c -o adv7511_init -static # 静态链接,生成体积较大的独立可执行文件第二步,我们把代码放到板子的sd卡里面,运行板子,从sd卡中调用
//转移到你的代码下 cd /mnt/sd-mmcblk0p1/scr/ //运行你的程序 ./adv7511_init //也可以直接运行 ./mnt/sd-mmcblk0p1/scr/adv7511_init