笔记-树莓派2b与QT5搭建交叉编译环境

写在前面

关于树莓派2b与qt5搭建交叉编译环境,网上有很多相关的教程,但是我尝试了几种方式都未能成功,其中的方法:在window系统搭建交叉编译环境,在Ubuntu16.04系统搭建交叉编译环境或者是在Ubuntu18.04,,都没有成功,最后在Ubuntu12.04成功搭载了树莓派2b与qt5的编译环境。

以下是搭建步骤

1. 准备文件:

  • gcc-4.7-linaro-rpi-gnueabihf.tbz
  • 2015-05-05-raspbian-wheezy.zip
  • cross-compile-tools-master.zip
  • qt-everywhere-opensource-src-5.4.1.tar
  • qt-opensource-linux-x86-5.4.1.run

以上这些版本在Ubuntu12.04 32位系统搭建没有问题,其他版本自行测试,本人测试过其他版本会出现有很多问题。
我这里提供下载网盘链接: https://download.csdn.net/download/weixin_40774521/11217179

2.搭建环境
在VMware Workstation搭建Ubuntu12.04 32位虚拟机,关于VMware和Ubuntu自行到百度下载
笔记-树莓派2b与QT5搭建交叉编译环境_第1张图片
3.在Ubuntu主文件夹home创建opt文件夹并放入以下图示文件
笔记-树莓派2b与QT5搭建交叉编译环境_第2张图片
4.挂载树莓派镜像
$sudo mkdir /mnt/rasp-pi-rootfs

$sudo mount -o loop,offset=62914560 2015-05-05-raspbian-wheezy.img /mnt/rasp-pi-rootfs

5.编译qtbase

$sudo apt-get install g++

$cd ~/opt/cross-compile-tools

$sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc

$cd ~/opt/qt-everywhere-opensource-src-5.4.1/qtbase

$./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -release -reduce-exports -make libs -no-pch -make tools -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi

(执行时间较长)执行至这一步的执行结果:
笔记-树莓派2b与QT5搭建交叉编译环境_第3张图片
接着:
$make -j 4

$sudo make install

$for MODULE in qtimageformats qtsvg qtscript qtxmlpatterns qtdeclarative qtsensors qtgraphicaleffects qtlocation qtserialport qttools qtquick1 qtquickcontrols; do cd $MODULE; /usr/local/qt5pi/bin/qmake .; make -j4; sudo make install; cd …; done

(以上三个命令的执行时间较长,请耐心等待。执行结束后截图)
笔记-树莓派2b与QT5搭建交叉编译环境_第4张图片
6.Qt交叉编译成功,烧写新的树莓派镜像

首先将树莓派的TF卡通过读卡器插入电脑

$cd ~/opt/

$sync

$sudo umount /mnt/rasp-pi-rootfs

可以用$sudo fdisk –l命令查看TF卡在Ubuntu系统下挂载情况
笔记-树莓派2b与QT5搭建交叉编译环境_第5张图片
博主使用的是16G的TF卡,可以看到的挂载地址为/dev/sdb。所以烧写命令如下:

$sudo dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sdb

执行烧写命令以后,终端窗口是没有详细显示烧写过程的,所以只要慢慢等待就可以了。

烧写完成后会有相关信息显示:
在这里插入图片描述
7.把烧写好的TF卡插入树莓派并开启树莓派

此时再把刚才卸载的树莓派镜像再次挂载到原地址(因为后面Qt Creator的交叉编译需要这个镜像里的文件作为库。否则会在编译的时候出现“Qt没有被正确安装,请运行install这样的错误”),挂载命令和之前一样

$sudo mount -o loop,offset=62914560 2015-05-05-raspbian-wheezy.img /mnt/rasp-pi-rootfs

8.安装并配置Qt Creator

运行qt-opensource-linux-x86-5.4.1.run,不会安装的同学自行百度。

安装结束后,打开qt creator

将树莓派和Ubuntu连入同一局域网,自行查看树莓派的IP地址

点开运行任意一个例程
笔记-树莓派2b与QT5搭建交叉编译环境_第6张图片
点击运行会出现报错:cannot find -lGL错误的解决方法如下:
笔记-树莓派2b与QT5搭建交叉编译环境_第7张图片
关闭Qt Creator

执行命令:sudo apt-get install libqt4-dev或者sudo apt-get install libgl1-mesa-dev或者libgl1-mesa-dev或者libglu1-mesa-dev

即可解决问题

重启Qt Creator再次编译刚才的示例工程,编译成功并运行了以下出现:
笔记-树莓派2b与QT5搭建交叉编译环境_第8张图片
接下来配置交叉编译环境:
项目->管理构件套件->设备->添加->通用linux设备->开启向导->标识配置的名称:Rsapberry Pi、IP地址:192.168.191.2、username默认为:pi、验证类型:密码、用户密码默认为:raspberry->下一步->完成。向导会自动开启设备网络测试,测试结果:
笔记-树莓派2b与QT5搭建交叉编译环境_第9张图片
关闭测试结果后点击Apply->点击构建和运行->Qt Version->添加->找到/usr/local/qt5pi/bin/qmake双击->版本名称可以设定为qt5pi->Apply

笔记-树莓派2b与QT5搭建交叉编译环境_第10张图片
编译器->添加->名称可以设为ARM GCC->点击浏览 ->添加/home/vmuser/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g+±>Apply
笔记-树莓派2b与QT5搭建交叉编译环境_第11张图片
点击Debuggers->Add->Name可以设置为Raspberry Pi->Path设置为/home/vmuser/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gdb->Apply
笔记-树莓派2b与QT5搭建交叉编译环境_第12张图片
点击构件套件(Kit) ->添加->名称可以设定为Raspberry Pi->设备类型:通用Linux设备->设备:Raspberry Pi(通用Linux类型的默认设备) ->编译器:ARM GCC->调试器:Raspberry Pi->Qt版本:qt5pi->OK。
笔记-树莓派2b与QT5搭建交叉编译环境_第13张图片
添加构建套件:Raspberry Pi。
笔记-树莓派2b与QT5搭建交叉编译环境_第14张图片
在.pro 文件中增加以下两句
笔记-树莓派2b与QT5搭建交叉编译环境_第15张图片
点击左下角的Debug选项->选择Raspberry Pi->Debug->运行
笔记-树莓派2b与QT5搭建交叉编译环境_第16张图片
自此,Qt5.4.1在树莓派2B和Ubuntu12.04LTS版本上的交叉编译环境搭建基本完成。

你可能感兴趣的:(笔记)