樹莓派 Qt5.7交叉編譯


一、准備軟件
    1.2016-11-25-raspbian-jessie.img(官網下載)
    2.cross-compile-tools-master.zip
    3.gcc-4.7-linaro-rpi-gnueabihf.tbz
    4.qt-everywhere-opensource-src-5.7.1.tar.gz(官網下載)
    中間2.3百度網盤分享:https://pan.baidu.com/s/1jH7zRmA
二、步驟
    1.前幾步參照,(創建文件夾,掛載,下載軟件請看准備軟件,他提供的git鏈接已經不能用了),http://wiki.qt.io/RaspberryPi_Beginners_Guide。
    2.當掛載完成后,請進入cd /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/查看兩個so文件,命令ls -l libdl.so 和ls -l libm.so,看清其指向的文件是否如lrwxrwxrwx 1 root root 13 Jan 10 15:30 libdl.so -> libdl-2.19.so ,如果不是,先刪除原來的軟連接(sudo rm libdl.so),執行sudo ln -s libdl-2.19.so libdl.so(重新建立軟連接),如果arm-linux-gnueabihf文件夾下不存再libdl-2.19.so,看看剛才ls命令其指向的文件在哪,拷貝至此即可,對於libm同樣操作,原因:防止出現:undefined reference to `__dlopen’等問題,參照http://blog.csdn.net/scylhy/article/details/52818779。
    3.Compiling qtbase
    ①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.7.1/qtbase folder and run:
    ./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 -reduce-exports -release -make libs -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi
    上步執行后,qtbase文件夾下將出現一個config.summary,打開后修改FontConfig=yes,libinput=yes,udev=yes
接着執行
    ④make -j 4
    ⑤sudo make install
    ⑥cd ~/opt/qt-everywhere-opensource-src-5.7.1/
    ⑦執行如下命令
    for MODULE in qtimageformats qtsvg  qtscript qtxmlpatterns qtdeclarative qtsensors qt3d qtgraphicaleffects  qtlocation ; do  cd $MODULE;  /usr/local/qt5pi/bin/qmake .;  make -j4;  sudo make install;  cd ..; done
    4. cd~/opt/
       sync; sudo umount /mnt/rasp-pi-rootfs (取消掛載)
       sudo dd bs=1M if=2016-11-25-raspbian-jessie.img of=/dev/sdb; sync (燒錄至內存卡)
       到此就完成了交叉編譯的環境配置
    
三、qtcreator的配置
    參照http://www.cnblogs.com/duzezhou/p/5692016.html

    唯一需要注意的是,電腦寫程序的時候依然需要先掛載sudo mount -o loop,offset=70254592 2016-11-25-raspbian-jessie.img /mnt/rasp-pi-rootfs,需要用到其中的庫

    qtcreator .pro文件要寫上下邊兩句,要不然無法運行,提示找不到遠程路徑
    target.path = /home/pi/test
    INSTALLS += target

四、程序只能全屏顯示
    如果程序下載至raspberry中只能全屏,不要懷疑,並沒有出問題,從qt5開始后,使用qpa,platform有eglfs,linuxfb等等,其中eglfs默認full screen顯示,如果想窗口顯示,用linuxfb模式,在運行程序時加上后綴,如./test -platform linuxfb。官網地址有詳細說明:http://doc.qt.io/qt-5/embedded-linux.html

五、如果提示缺少字體

      將字體放至電腦/usr/lib/fonts(如果沒有fonts目錄,自己新建一個,然后把下載的ttf字體放入),並且拷貝字體至樹莓派/usr/local/qt5pi/lib下,然后項目中修改如下即可

 

  1. QApplication a(argc, argv);  
  2. QFont font("fangsong", 16);  
  3. a.setFont(font);  

 

 

     參照:http://wiki.qt.io/RaspberryPi_Beginners_Guide
     http://blog.csdn.net/scylhy/article/details/52818779
     http://www.cnblogs.com/duzezhou/p/5692016.html   

 

http://blog.csdn.net/xueyeguiren8/article/details/54345013


免責聲明!

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



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