1. 交叉编译(推荐)
1.1 优缺点
优点:
采用x86架构的CPU进行编译,编译速度快。
源码编辑方便,开发环境支持各种如vsCode、qtCreator等IDE。
缺点:
编译环境需要进行安装部署。
程序的调试运行操作相对本地编译不那么直接。
1.2 EASY-EAI编译环境简介
EASY-EAI编译环境是一款由广州灵眸科技自主研发的在线编译环境(开发板在线)。建立了PC端与板卡端实时同步的映射关系;保障了在PC端进行交叉编译时,能与开发板的依赖库进行实时链接。
1.2.1 安装部署方式
EASY-EAI编译环境,相对于传统的通过解压编译工具链配置系统环境变量的交叉编译环境,具有部署更加方便的特点,并且屏蔽了各种兼容性问题。具体的安装步骤在《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》文章中有详细的说明。
1.2.2 挂载嵌入式设备(开发板)
首先,通过run.sh脚本进入EASY-EAI编译环境:
然后通过串口调试,查看设备IP地址:
回到EASY-EAI编译环境,尝试ping通开发板。能ping通后,则选用一个IP地址(eth0,wlan0都行),把开发板的rootfs根目录需要通过mount命令挂载到EASY-EAI编译环境中的/mnt,命令如下所示:
sudo mount -t nfs -o nolock 192.168.3.121:/ /mnt
我们在EASY-EAI编译环境中编译好可执行程序,再把可执行程序拷贝进/mnt内,它就会自动被同步到开发板的rootfs根目录中。
1.3 常规编译手段示例
【百度网盘】
链接:https://pan.baidu.com/s/13rdifPHyZwHFIvbvBC78jw?pwd=1234
提取码:1234
此处是四种常规编译方式的编译示例:
每个示例都包含了一个build.sh脚本,以及一个源代码文件,如下所示。
我们随便进入一个示例,在里面执行./build.sh操作,就会生成一个hello文件
然后只需要在EASY-EAI编译环境中把生成的文件拷贝到/mnt的任意子目录中即可
通过串口调试进入板卡后,定位到刚刚拷贝hello文件的位置,如下所示:
cd /userdata/
执行ls命令查看该目录,就可以发现hello文件已经被同步过来了
ls
直接运行hello文件,即可看到运行结果
./hello
1.4 常规编译手段说明
由映射关系得知,EASY-EAI编译环境的/mnt目录就是开发板的根目录,由于交叉编译工具的依赖库都在开发板上,因此只需要给编译器指定sysroot为/mnt即可。
GCC/G++:
aarch64-linux-gnu-gcc --sysroot=/mnt hello_world.c -o hello aarch64-linux-gnu-g++ --sysroot=/mnt hello_world.cpp -o hello
CMAKE:在 CMakeList.txt 文件中包含以下文件即可。
include ($ENV{HOME}/configs/cross.cmake)
QMAKE:qmake工具直接安装到开发板中,所以可以直接在EASY-EAI编译环境中执行qmake,示例命令如下。
/mnt/usr/bin/qmake xxxxxx.pro make
2. 本地编译
2.1 优缺点
优点:
把开发板直接当成一台卡片电脑使用,无须进行繁琐的应用部署。
缺点:
采用rv1126B的CPU进行编译,性能相对较弱,编译速度慢。
源码编辑困难,仅有源生的vi编辑器可使用,无法使用各种IDE。
2.2 使用方法
可以利用:调试串口、ssh三种方式进入开发板后台,然后直接把开发板当做一台装有ubuntu系统的电脑使用。




