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

转自:

http://blog.csdn.net/shenhuan1104/article/details/53486619

http://blog.csdn.net/shenhuan1104/article/details/53500829

本文永久地址:https://my.oschina.net/bysu/blog/1557358

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

参考了博文:http://www.linuxidc.com/Linux/2016-07/133462.htm

下面开始搭建步骤:

实验平台:树莓派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

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

百度网盘下载:http://pan.baidu.com/s/1gflswjp 提取密码:1em5

 

2.搭建环境

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

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

 

4.挂载树莓派镜像

$sudomkdir /mnt/rasp-pi-rootfs

$sudo mount -o loop,offset=70254592 2016-05-27-raspbian-jessie.img /mnt/rasp-pi-rootfs

注意:

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

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

$sudofdisk -l 2016-05-27-raspbian-jessie.img

offset=(512* 137216=70254592)

 

5.编译qtbase

$sudoapt-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-optionCROSS_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

花了44分钟。

$sudo make install

 

$for MODULE in qtimageformatsqtsvg qtscript qtxmlpatterns qtdeclarative qtsensors qtgraphicaleffectsqtlocation qtserialport qttools qtquick1 qtquickcontrols; do  cd$MODULE;  /usr/local/qt5pi/bin/qmake .;  make -j4;  sudo makeinstall;  cd ..; done

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

花了1小时左右!

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

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

$cd /opt/

$sync

$sudo umount/mnt/rasp-pi-rootfs

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

可以看到的挂载地址为/dev/sdb。所以烧写命令如下:

$sudo dd bs=4Mif=2016-05-27-raspbian-jessie.img of=/dev/sdb

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

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

 

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

$sudo mount -o loop,offset=70254592 2016-05-27-raspbian-jessie.img/mnt/rasp-pi-rootfs

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

7.安装并配置Qt Creator

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

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

 

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

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

 

 

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

 

cannotfind -lGL错误的解决方法如下

关闭QtCreator

执行命令:sudoapt-get install libqt4-dev或者sudoapt-get install libgl1-mesa-dev或者libgl1-mesa-dev或者libglu1-mesa-dev即可解决问题

 

 

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

 

编译成功。

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

项目->管理构件套件->设备->添加->通用linux设备->开启向导->标识配置的名称:RsapberryPi、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类型的默认设备) ->编译器:ARMGCC->调试器:RaspberryPi->Qt版本:qt5pi->OK。

 

添加构建套件:RaspberryPi。

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

 

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

Linux端运行结果:

 

树莓派端用的是远程桌面,没能显示出来,可能是QT窗口的问题,后面会继续调试。

然后想到不用QT界面程序,直接用一个控制台程序进行测试,下面是PC上编写的代码:

PC上运行结果:

用交叉编译器生成树莓派上的可执行文件:

可执行文件如图所示:

将可执行文件hello拷贝到树莓派上并运行,结果如图:

 至此可以确定整个树莓派交叉编译环境。

转自:http://blog.csdn.net/shenhuan1104/article/details/53486619

http://blog.csdn.net/shenhuan1104/article/details/53500829

转载于:https://my.oschina.net/bysu/blog/1557358

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
从github.com/raspberrypi/tools完整下载的主分支,直接git太慢还容易失败,特意分享出来,实测在Ubuntu 18上安装x64工具链可用,gcc版本:4.8.3. 文件300M+,不能上传大于220M的,尝试过解压后分卷,会导致安装有问题,所以直接发一个链接,大家去那里下吧。 文件信息: └─tools-master ├─arm-bcm2708 │ ├─arm-bcm2708-linux-gnueabi │ │ ├─arm-bcm2708-linux-gnueabi │ │ │ ├─bin │ │ │ ├─debug-root │ │ │ │ └─usr │ │ │ │ └─bin │ │ │ ├─include │ │ │ │ └─c++ │ │ │ │ └─4.7.1 │ │ │ │ ├─arm-bcm2708-linux-gnueabi │ │ │ │ │ └─bits │ │ │ │ ├─backward │ │ │ │ ├─bits │ │ │ │ ├─debug │ │ │ │ ├─decimal │ │ │ │ ├─ext │ │ │ │ │ └─pb_ds │ │ │ │ │ └─detail │ │ │ │ │ ├─binary_heap_ │ │ │ │ │ ├─binomial_heap_ │ │ │ │ │ ├─binomial_heap_base_ │ │ │ │ │ ├─bin_search_tree_ │ │ │ │ │ ├─branch_policy │ │ │ │ │ ├─cc_hash_table_map_ │ │ │ │ │ ├─eq_fn │ │ │ │ │ ├─gp_hash_table_map_ │ │ │ │ │ ├─hash_fn │ │ │ │ │ ├─left_child_next_sibling_heap_ │ │ │ │ │ ├─list_update_map_ │ │ │ │ │ ├─list_update_policy │ │ │ │ │ ├─ov_tree_map_ │ │ │ │ │ ├─pairing_heap_ │ │ │ │ │ ├─pat_trie_ │ │ │ │ │ ├─rb_tree_map_ │ │ │ │ │ ├─rc_binomial_heap_ │ │ │ │ │ ├─resize_policy │ │ │ │ │ ├─splay_tree_ │ │ │ │ │ ├─thin_heap_ │ │ │ │ │ ├─tree_policy │ │ │ │ │ ├─trie_policy │ │ │ │ │ └─unordered_iterator │ │ │ │ ├─profile │ │ │ │ │ └─impl │ │ │ │ ├─tr1 │ │ │ │ └─tr2 │ │ │ └─sysroot │ │ │ ├─etc │ │ │ ├─lib │ │ │ ├─sbin │ │ │ └─usr │ │ │ ├─bin │ │ │ ├─include │ │ │ │ ├─arpa │ │ │ │ ├─asm │ │ │ │ ├─asm-generic │ │ │ │ ├─bits │ │ │ │ ├─drm │ │ │ │ ├─gnu │ │ │ │ ├─linux │ │ │ │ │ ├─byteorder │ │ │ │ │ ├─caif │ │ │ │ │ ├─can │ │ │ │ │ ├─dvb │ │ │ │ │ ├─hdlc │ │ │ │ │ ├─isdn │ │ │ │ │ ├─mmc │ │ │ │ │ ├─netfilter │ │ │ │ │ │ └─ipset │ │ │ │ │ ├─netfilter_arp │ │ │ │ │ ├─netfilter_bridge │ │ │ │ │ ├─netfilter_ipv4 │ │ │ │ │ ├─netfilter_ipv6 │ │ │ │ │ ├─nfsd │ │ │ │ │ ├─raid │ │ │ │ │ ├─spi │ │ │ │ │ ├─sunrpc │ │ │ │ │ ├─tc_act │ │ │ │ │ ├─tc_ematch │ │ │ │ │ ├─usb │ │ │ │ │ └─wimax │ │ │ │ ├─mtd │ │ │ │ ├─net │ │ │ │ ├─netash │ │ │ │ ├─netatalk │ │ │ │ ├─netax25 │ │ │ │ ├─neteconet │ │ │ │ ├─netinet │ │ │ │ ├─netipx │ │ │ │ ├─netiucv │ │ │ │ ├─netpacket │ │ │ │ ├─netrom │ │ │ │ ├─netrose │ │ │ │ ├─nfs │ │ │ │ ├─protocols │ │ │ │ ├─rdma │ │ │ │ ├─rpc │ │ │ │ ├─rpcsvc │ │ │ │ ├─scsi │ │ │ │ │ └─fc │ │ │ │ ├─sound │ │ │ │ ├─sys │ │ │ │ ├─video │ │ │ │ └─xen │ │ │ ├─lib │ │ │ │ └─gconv │ │ │ ├─libexec │ │ │ ├─sbin │ │ │ └─share │ │ │ ├─i18n │ │ │ │ ├─charmaps │ │ │ │ └─locales │ │ │ └─locale │ │ │ ├─be │ │ │ │ └─LC_MESSAGES │ │ │ ├─bg │ │ │ │ └─LC_MESSAGES │ │ │ ├─ca │ │ │ │ └─LC_MESSAGES │ │ │ ├─cs │ │ │ │ └─LC_MESSAGES │ │ │ ├─da │ │ │ │ └─LC_MESSAGES │ │ │ ├─de │ │ │ │ └─LC_MESSAGES │ │ │ ├─el │ │ │ │ └─LC_MESSAGES │ │ │ ├─en_GB │ │ │ │ └─LC_MESSAGES │ │ │ ├─es │ │ │ │ └─LC_

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值