QT_project交叉编译至i.mx6ull
1.烧录正点原子出厂系统
原子哥出厂系统的库比较齐全,常用的库和包已经安装好,可以直接越过繁琐的环境,进行QT应用层面的开发移植。
2.配置网络
网络配置十分关键,决定了主机是否能够和开发板成功通信,以方便能够将编译好的elf可执行文件和文件运行所需要的动态链接库(.so)和静态链接库(.a)传送到开发板当中。
配置流程:
1.在u-boot中配置环境变量:
setenv ipaddr 192.168.2.192
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.2.1
setenv netmask 255.255.255.0
setenv serverip 192.168.2.109
saveenv
2.测试网络:
ping 192.168.2.192 //主机ping开发板
3.传输文件
传输文件时使用SSH协议进行传输
scp Appname name@192.168.2.192:/IPC/
3.文件编译
在QT源码路径下,进入终端进行编译:
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
//arm-poky-linux-gnueabi-gcc -v 查看编译器信息
make clean
make
4.移植文件依赖
IPC_FOR_CAR项目中用到了FFMPEG视频流,其中的动态链接库需要将其编译为arm平台下的.so才能满足开发板运行程序的条件。
交叉编译ffmpeg遇到的问题
问题一:无法找到poky或者arm-linux-gnueabihf
在/etc/profile和~/.bashrc中添加了poky的路径 使用$取值查看 arm-linux-gnueabihf -v可以显示版本
问题二:由于./configure需要root权限 需要加上sudo
加上sudo,很多时候一些文件只能在用户环境下找到而root环境不能找到,使用sudo会导致丢失用户环境,先sudo -i 获取root权限保存用户环境即可。
问题三:poky还是报错
可能poky版本问题导致无法识别march等参数无法编译,使用arm-linux-gnueabihf,这时候会出现warning说没有pkg-config 可以不管。make后会出现libavutil,安装对应库,apt install
问题四:如果安装libavutil可能会出现依赖无法install
/var/lib/dpkg下 available-》available-bak status-》status-bak status-old-》status 修复apt install的问题
问题五:如果安装pkg-config 可能会出现依赖无法gdate.c文件有问题
#program …声明一下即可。
tar -vczf lib.tar.gz ./*打包压缩
tar -vxzf lib.tar.gz 解压
移植至开发板的位置:
用 ldconfig -v 指令查看目前已经生效环境变量,其中/usr/lib和/lib是系统默认的环境变量文件,可以直接将软件所需要的所有依赖拷贝至这两个地址当中。不过为了让开发者的依赖文件位置更加清晰,通常是将其放置到一个单独的路径下,如:/usr/local/lib/ 并在/etc/ld.so.conf中加入这个地址,最后再运行ldconfig -v使其生效并查看其是否成功加入至系统环境变量中
运行效果
QT项目链接:https://gitee.com/zhou-wenqi/ipc-for-car