樹莓派3B的Qt交叉編譯環境搭建

轉自:linux

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

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

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

實驗室項目須要用Qt在樹莓派上開發一個用戶交互界面。雖然樹莓派的硬件配置隨版本更新不斷提高,可是仍是沒法知足直接在樹莓派上進行Qt開發,因此首先要作的事情就是搭建交叉編譯環境。oop

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

下面開始搭建步驟:ui

實驗平臺:樹莓派2B(後來在樹莓派3上進行了實驗,除了raspbian鏡像文件不一樣之外,其餘文件不變,驗證了該方案可行。).net

1.準備文件(下載方式後加)調試

2015-05-05-raspbian-wheezy.ziporm

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.二、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

相關文章
相關標籤/搜索