一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

樹莓派&qt5交叉編譯

 魅影蒼穹 2020-03-03
Rasberrypi&Qt cross compilation
本以為樹莓派這么受歡迎,大家應該把開發(fā)樹莓派中遇到的問題解決的差不多。但遇到一個又一個問題,解決一個又一個,心累啊,最終還是把環(huán)境搭建好了。ps:加入到某些樹莓派qq群,本以為有大神能夠幫忙,結果,進去后剛問問題,所謂的大神就說 新手??! 怎么啟動的程序……,等我把問題說清楚,全都啞巴了!
1
樹莓派安裝qt5&qtcreator–>pc交叉編譯對應版本的qt源碼–>配置pc端的qtcreator–>測試

準備

樹莓派2B+
系統(tǒng)是 2016-09-23-raspbian-jessie.img,該版本支持apt-get方式安裝qt,目前是5.3.2版本。
低版本升級或者重新燒制系統(tǒng)(格式化后重新分區(qū),徹底清理干凈sd卡,否則會發(fā)生意想不到的結果)
概覽

樹莓派
1、系統(tǒng)燒制、驅動安裝
2、樹莓派安裝qt-default(qt5.3.2) 和 qtcreator
PC(ubuntu16.04)
1、QT官方教程:交叉編譯qt5.3.2要和樹莓派版本對應
2、qtcreator arm工具及配置,及遠程部署
3、 忽略這一步—————最終,我們將掛載的鏡像燒到sd卡,啟動系統(tǒng)后,就可以直接使用qt5了。所以編譯的qt5的庫就在掛載的鏡像中,我們只需把它拷到樹莓派上,再設置環(huán)境變量,就應該能用了。qt5庫位置:/mnt/rasp-pi-rootfs/usr/local/qt5pi
問題匯總
1、make階段的符號鏈接問題 undefined reference to `__dlopen’等問題的解決方案
2、文件不匹配的問題,重新獲取源碼github或者qt官網
3、如果哪天qtcreator編譯樹莓派程序時,發(fā)生丟失文件的錯誤。請先確認是否未掛載樹莓派
sudo mkdir /mnt/rasp-pi-rootfs
sudo mount -o loop,offset=62914560 2015-05-05-raspbian-wheezy.img /mnt/rasp-pi-rootfs

4、啟動樹莓派后,不能正常驅動鍵盤、3.5LCD顯示器。格式化SD卡重新分區(qū),燒制系統(tǒng)。
樹莓派上安裝qt5
要求安裝的系統(tǒng)是jessie
安裝qt&qtcreator

sudo apt-get install qt-default//目前是qt5.3.2
sudo apt-get install qtcreator//安裝完這一步,qt程序的界面才啟動起來
交叉編譯教程
QT官方教程:交叉編譯
官方教程的翻譯
簡單說一下流程

準備
rasberrypi jessie鏡像
qt交叉編譯工具鏈(按照官方教程做就可以)
qt5.3.2源碼 on qt official site
qt5.3.2源碼on github
32位運行庫(如果你的系統(tǒng)是64位的)
編譯

掛載樹莓派(百度jessie掛載即可//交叉編譯時會使用樹莓派的庫和工具,以后qtcreator程序時,也會用到系統(tǒng)中的文件)

 sudo mkdir /mnt/rasp-pi-rootfs
sudo mount -o loop,offset=62914560 2015-05-05-raspbian-wheezy.img /mnt/rasp-pi-rootfs
1
2
矯正系統(tǒng)鏈接和庫路徑(是用的是掛載的樹莓派文件;文件位置~/opt,如果更改,請對應)

cd ~/opt/cross-compile-tools
sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc
1
2
配置make

cd ~/opt/cross-compile-tools
sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc
1
2
make&install

make -j 4  //這步會發(fā)生符號鏈接問題,見下
sudo make install  //安裝到掛載的樹莓派系統(tǒng)中。
1
2
燒制鏡像到SD卡(現在不使用該步驟,直接在樹莓派上以apt-get方式安裝qt-default和qtcreator)
最終,我們將掛載的鏡像燒到sd卡,啟動系統(tǒng)后,就可以直接使用qt5了。所以編譯的qt5的庫就在掛載的鏡像中,我們只需把它拷到樹莓派上,再設置環(huán)境變量,就應該能用了。qt5庫位置:/mnt/rasp-pi-rootfs/usr/local/qt5pi
注意事項

交叉編譯前最好不要使用過QT,或者重啟機器后交叉編譯,不要啟動qtcreator等
如果不按照官方教程的文件結構,請將文件結構對應準確
關于安裝32庫
 sudo apt-get install ia32-libs
 //如果無法定位ia32-libs嘗試安裝下列內容,或者安裝時提示的軟件 lib32z1 lib32ncurses5 lib32bz2-1.0 
1
2
PC上的其他配置

qtcreator 配置,所需要工具均在編譯源碼的目錄下
遠程部署
遇到的問題及解決方案

make階段的符號鏈接問題
按照官方教程正確操作后,出現undefined reference to `__dlopen’等問題,顯示內容如下


qlibrary_unix.cpp:(.text+0x1330): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlopen.o): In function `dlopen':
(.text+0xc): undefined reference to `__dlopen'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlclose.o): In function `dlclose':
(.text+0x0): undefined reference to `__dlclose'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlsym.o): In function `dlsym':
(.text+0xc): undefined reference to `__dlsym'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlerror.o): In function `dlerror':
(.text+0x0): undefined reference to `__dlerror'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(feholdexcpt.o): In function `feholdexcept':
(.text+0x48): undefined reference to `_dl_hwcap'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(fesetenv.o): In function `fesetenv':
(.text+0x64): undefined reference to `_dl_hwcap'
collect2: error: ld returned 1 exit status
Makefile:1215: recipe for target '../../lib/libQt5Core.so.5.5.1' failed
make[2]: *** [../../lib/libQt5Core.so.5.5.1] Error 1
make[2]: Leaving directory '/home/liu/bin/opt/qt5/qtbase/src/corelib'
Makefile:170: recipe for target 'sub-corelib-make_first' failed
make[1]: *** [sub-corelib-make_first] Error 2
make[1]: Leaving directory '/home/liu/bin/opt/qt5/qtbase/src'
Makefile:45: recipe for target 'sub-src-make_first' failed
make: *** [sub-src-make_first] Error 2

解決方案
軟連接不對,重建兩個軟連接,均在掛載的樹莓派鏡像上。如果已經存在該軟鏈接,先刪除再創(chuàng)建。

//最終,我們將掛載的鏡像燒到sd卡,啟動系統(tǒng)后,就可以直接使用qt5了,所以編譯的qt5的庫就在掛載的鏡像中,我們只需把它拷到樹莓派上,再設置環(huán)境變量,就應該能用了。
sudo ln -s /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/libdl-2.13.so /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/libdl.so
sudo ln -s  /mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf/libm-2.13.so  /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libm.so
1
2
3
出現上述問題的原因
1
in that case the fixQualifiedLibraryPaths won’t help you as it can’t find the symlinks. Copying libdl.so and libm.so might also fail, for example, if you use a flash drive to copy data from your existing Raspberry Pi, it won’t copy them as symlinks, but will copy the libraries themselves. However, for the build to succeed, it seems to require symlinks.

沒有找到文件問題
在make 時發(fā)生如下問題

/vc/lib -L/home/liu/bin/opt/qt5/qtlocation/lib -lQt5Location -L/home/liu/bin/opt/qt5/qtbase/lib -L/home/liu/bin/opt/qt5/qtdeclarative/lib -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Positioning -lQt5Core -lGLESv2 -lpthread -lpoly2tri 
/home/liu/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lpoly2tri
collect2: error: ld returned 1 exit status
Makefile:281: recipe for target '../../../qml/QtLocation/libdeclarative_location.so' failed
make[4]: *** [../../../qml/QtLocation/libdeclarative_location.so] Error 1
make[4]: Leaving directory '/home/liu/bin/opt/qt5/qtlocation/src/imports/location'
Makefile:80: recipe for target 'sub-location-install_subtargets' failed
make[3]: *** [sub-location-install_subtargets] Error 2
make[3]: Leaving directory '/home/liu/bin/opt/qt5/qtlocation/src/imports'
Makefile:135: recipe for target 'sub-imports-install_subtargets' failed
make[2]: *** [sub-imports-install_subtargets] Error 2
make[2]: Leaving directory '/home/liu/bin/opt/qt5/qtlocation/src'
Makefile:56: recipe for target 'sub-src-install_subtargets' failed
make[1]: *** [sub-src-install_subtargets] Error 2
make[1]: Leaving directory '/home/liu/bin/opt/qt5/qtlocation'
Makefile:366: recipe for target 'module-qtlocation-install_subtargets' failed
make: *** [module-qtlocation-install_subtargets] Error 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
解決辦法其原因可能是,make配置文件和源文件不匹配造成的,請重新獲取源碼,重新編譯。

啟動不出來qt界面問題
問題描述:在終端啟動程序后,測試字符都已經顯示,但圖形渲染沒有出現。因為這個為題讓我,真正工作了三天??!

解決方案
樹莓派上安裝qt-default其版本是5.3.2,交叉編譯時請編譯對應版本。安裝qtcreator,再啟動測試demo時圖形界面就渲染出來了。

樹莓派上啟動qt程序發(fā)現不了設備等,百度即可

遠程部署測試結果

引用鏈接

debian7 wheezy升級到debian8 jessie
rasberrypi jessie鏡像
安裝qt5
樹莓派安裝QT5
qt5.3.2源碼 on qt official site
qt5.3.2源碼on github
QT官方教程:交叉編譯
官方教程的翻譯
undefined reference to `__dlopen’等問題的解決方案
qtcreator配置
Issues with Qt5 apps
移植qt之更改分辨率
配置無線驅動
fdisk分區(qū)
樹莓派2安裝使用小米WIfi(360 小度 騰訊wifi)
微雪3.5inch LCD安裝教程含驅動
如何使用手機作為樹莓派的“屏幕”教程
scp傳輸文件
軟件定義硬件,使用js開發(fā)硬件程序
————————————————
版權聲明:本文為CSDN博主「longtails」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/scylhy/article/details/52818779

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本一本不卡免费视频| 国产欧洲亚洲日产一区二区| 欧美中文字幕一区在线| 成人精品一区二区三区综合 | 国产高清一区二区不卡| 国产精品成人免费精品自在线观看| 国产精品视频一区麻豆专区| 日本特黄特色大片免费观看 | 国产在线一区二区免费| 久久国内午夜福利直播| 国产一区二区不卡在线视频| 国产精品不卡高清在线观看 | 五月婷婷六月丁香亚洲| 熟女体下毛荫荫黑森林自拍| 国产日韩精品激情在线观看| 99久久国产综合精品二区| 精品人妻精品一区二区三区| 精品高清美女精品国产区| 韩日黄片在线免费观看| 日韩成人高清免费在线| 国产精品久久香蕉国产线| 男女午夜视频在线观看免费| 国产又黄又爽又粗视频在线| 日韩欧美二区中文字幕| 91免费一区二区三区| 亚洲第一视频少妇人妻系列| 最近最新中文字幕免费| 后入美臀少妇一区二区| 国产精品午夜一区二区三区| 高清一区二区三区四区五区| 少妇熟女亚洲色图av天堂| 粗暴蹂躏中文一区二区三区| 欧美日韩无卡一区二区| 国产色一区二区三区精品视频| 久久热九九这里只有精品| 五月婷婷亚洲综合一区| 国产成人精品国产成人亚洲 | 亚洲国产欧美久久精品| 免费观看在线午夜视频| 午夜精品国产一区在线观看| 国产欧美亚洲精品自拍|