树莓派2B、树莓派3的Qt交叉编译环境搭建

实验室项目需要用Qt在树莓派上开发一个用户交互界面。虽然树莓派的硬件配置随版本更新不断提升,但是还是无法满足直接在树莓派上进行Qt开发,所以首先要做的事情就是搭建交叉编译环境。

下面开始搭建步骤:

实验平台:树莓派2B(后来在树莓派3上进行了实验,除了raspbian镜像文件不同以外,其他文件不变,验证了该方案可行。)

1.准备文件(下载方式后加)

2015-05-05-raspbian-wheezy.zip

cross-compile-tools-master.zip

gcc-4.7-linaro-rpi-gnueabihf.tbz

qt-everywhere-opensource-src-5.4.1.tar

qt-opensource-linux-x86-5.4.1.run

这里如果不是有对更新的版本需求,还是建议严格按照上述给出的版本下载所需文件,否则可能会出问题。

2.搭建环境

VMware Workstation 12 Pro下建立的Ubantu虚拟机,版本为32位的12.04LTS。(试过64位的系统安装32位库支持的方法,但最终没有跑通,所以建议使用32位的Ubantu)

 

 

3.在Ubantu系统的主文件夹下新建文件夹命名opt,将准备好的文件放入opt文件夹并解压。

4.挂载树莓派镜像

$sudo mkdir /mnt/rasp-pi-rootfs

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

注意:

(1)loop,offset 之间,不能出现空格。

(2)offset该等于多少?可以执行以下命令查看

$sudo fdisk -l 2015-05-05-raspbian-wheezy.img

执行结果:

Device Boot      Start       End        Blocks    Id 

System

2015-05-05-raspbian-wheezy.img1             8192      122879     57344     c 

W95 FAT32 (LBA)

2015-05-05-raspbian-wheezy.img2             122880    6399999    3138560   83  Linux

 

offset=(512* 122880) ,这样就不会出错了。

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

(执行时间较长)执行至这一步的执行结果:

$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

(以上三个命令的执行时间较长,请耐心等待。执行结束后截图)

6.Qt交叉编译成功,烧写新的树莓派镜像

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

$cd ~/opt/

$sync

$sudo umount /mnt/rasp-pi-rootfs

可以用$sudo fdisk –l命令查看TF卡在Ubantu系统下挂载情况

博主使用的是16G的TF卡,可以看到的挂载地址为/dev/sdb。所以烧写命令如下:

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

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

烧写完成后会有相关信息显示:

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

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

最后把烧写好的TF卡插入树莓派并开启树莓派

 

7.安装并配置Qt Creator

将树莓派和Ubantu连入同一局域网,查看树莓派的IP地址(博主的树莓派IP地址为:192.168.191.2)

运行qt-opensource-linux-x86-5.4.1.run

一路下一步即可安装完成。

安装完成后打开Qt Creator(地址:~/Qt5.4.1/Tools/QtCreator/bin/qtcreator)

任意打开一个示例工程,点击运行:

cannot find -lGL错误的解决方法如下

关闭Qt Creator

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

即可解决问题

重启Qt Creator再次编译刚才的示例工程:

编译成功。

接下来配置交叉编译环境:

项目->管理构件套件->设备->添加->通用linux设备->开启向导->标识配置的名称:Rsapberry Pi、IP地址:192.168.191.2、username默认为:pi、验证类型:密码、用户密码默认为:raspberry->下一步->完成。向导会自动开启设备网络测试,测试结果:

关闭测试结果后点击Apply->点击构建和运行->Qt Version->添加->找到/usr/local/qt5pi/bin/qmake双击->版本名称可以设定为qt5pi->Apply

编译器->添加->名称可以设为ARM GCC->点击浏览 ->添加/home/vmuser/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++->Apply

点击Debuggers->Add->Name可以设置为Raspberry Pi->Path设置为/home/vmuser/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gdb->Apply

点击构件套件(Kit) ->添加->名称可以设定为Raspberry Pi->设备类型:通用Linux设备->设备:Raspberry Pi(通用Linux类型的默认设备) ->编译器:ARM GCC->调试器:Raspberry Pi->Qt版本:qt5pi->OK。

添加构建套件:Raspberry Pi。

点击左下角的Debug选项->选择Raspberry Pi->Debug->运行

自此,Qt5.4.1在树莓派2B和Linux14.02LTS版本上的交叉编译环境搭建基本完成。

Linux端运行结果:

树莓派端运行结果:

 

★独泽舟博客文章★ 原创文章转载请注明:http://www.cnblogs.com/duzezhou/

★独泽舟博客文章★ 原创文章转载请注明:http://www.cnblogs.com/duzezhou/

posted @ 2016-07-21 15:39  独泽舟  阅读(3330)  评论(12编辑  收藏  举报