天天看點

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

實驗室項目需要用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)

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

3.在Ubuntu系統的主檔案夾下建立檔案夾命名opt,将準備好的檔案放入opt檔案夾并解壓。

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

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

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

offset=(512* 137216=70254592)

5.編譯qtbase

$sudoapt-get install g++

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

$cd /opt/cross-compile-tools

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

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

$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

(執行時間較長)執行至這一步的執行結果:

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

$make -j 4

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

花了44分鐘。

$sudo make install

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

$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

( 以上三個指令的執行時間較長,請耐心等待。執行結束後截圖 )

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

花了1小時左右!

6.Qt交叉編譯成功,燒寫新的樹莓派鏡像

首先将樹莓派的TF卡通過讀卡器插入電腦

$cd /opt/

$sync

$sudo umount/mnt/rasp-pi-rootfs

可以用$sudofdisk –l指令檢視TF卡在Ubuntu系統下挂載情況

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

可以看到的挂載位址為/dev/sdb。是以燒寫指令如下:

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

執行燒寫指令以後,終端視窗是沒有詳細顯示燒寫過程的,是以隻要慢慢等待就可以了。

燒寫完成後會有相關資訊顯示:

【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)
【樹莓派開發】樹莓派3B的Qt交叉編譯環境搭建(1)

注意:此時再把剛才解除安裝的樹莓派鏡像再次挂載到原位址(因為後面QtCreator的交叉編譯需要這個鏡像裡的檔案作為庫。否則會在編譯的時候出現“Qt沒有被正确安裝,請運作install這樣的錯誤”),挂載指令和之前一樣:

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

最後把燒寫好的TF卡插入樹莓派并開啟樹莓派

繼續閱讀