樹莓派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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM