首先,訪問網站/qtproject/archive/qt/下載Ubuntu下的Qt源碼。
解壓壓縮包tar xvf qt-everywhere-src-5.14.0.tar.xz,創建項目目錄mkdir build_qt5.14。
使用命令行安裝必備軟體包sudo apt-get install libxcb-xinerama0-dev build-essential perl python git,並安裝特定的依賴庫,如sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev。
面對Python安裝失敗的問題,使用sudo apt install python3.10解決,通過命令python3 -V驗證安裝。
在編譯過程中,確認CMake已安裝,若未安裝,使用sudo apt-get install build-essential libfontconfig1 libdbus-1-3 libfreetype6 libudev1 libicu-dev libsqlite3-dev libxslt1-dev libssl-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev安裝所需依賴。
配置編譯命令./configure -prefix /home/linasi/QtVersion/build_qt5.14 -debug -opensource -confirm-license -no-openssl -no-opengl -qt-xcb -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -no-compile-examples -platform linux-g++-64,並進行編譯make j2(j2指內核數量)。
在遇到 xcb 相關問題時,使用sudo apt-get install libxcb1-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xinerama0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-composite0-dev libxcb-damage0-dev libxcb-present-dev libxcb-xtest0-dev libxcb-dri3-dev libxcb-xkb-dev libxcb-util-dev libxcb-ewmh-dev libxcb-xrm0 libxcb-xrm-dev安裝所有依賴庫,以解決 xcb 未識別問題。
在遇到qt識別問題時,嘗試刪除配置中的-qt-xcb參數。如果在刪除-no-compile-examples後仍然出現問題,編譯可順利進行。
最終完成編譯和安裝的步驟,確保Qt源碼在Ubuntu環境下成功部署。
② 請問Qt軟體在linux系統中如何打包移植
一、准備
busybox 1.14.1
qt-embedded-linux-opensource-src-4.5.1
tslib 1.4
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
構建一個新的根文件系統目錄,路徑為
/root/rootfs
二、具體步驟:
1、編譯安裝busybox
在官網下載最新版。可以參考如下幾處要修改的地方:
Busybox Settings ---> Build Options ---> (arm-linux-)Cross Compiler prefix
Busybox Settings ---> Installation Options --->[]Dont't use /usr
Busybox Settings ---> Installation Options --->(/root/rootfs) BusyBox installation prefix
Busybox Settings --->Busybox Library Tuning --->[*] Fancy Shell prompts
輸入如下命令,編譯並安裝。
# make;make install
2、編譯安裝tslib
# ./autogen.sh
# ./configure -prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
# make;make install
安裝目錄指明為 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/
主要是為了在編譯QTE時,不用指定tslib的頭文件和庫文件,方便以後程序開發。
注意:在做這一步前,需要做一個目錄鏈接
在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/目錄下
# ln -s ../../usr/include ./
3、編譯安裝QTE
1)、最基本的配置
# ./configure -prefix /usr -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -qt-mouse-tslib
-prefix /usr 使用這個配置,編譯後的QTE庫文件即可放在目標文件系統的/usr/lib下,而不是默認/usr/local/Trolltech/QtEmbedded-4.5.1 這個很深的目錄
2)、編譯
# make
# cp lib/* /root/rootfs/usr/lib -rd 將QTE庫文件拷貝到根文件系統的目錄
# cp plugins /root/rootfs/usr -rd 將QTE插件目錄拷貝到根文件系統的目錄
4、根文件系統的設置
1)、這時/root/rootfs/usr下應該有 bin etc include lib sbin目錄
tslib生成的etc目錄,包含一個tslib的配置文件 nf,編輯此文件,去掉mole_raw input前的注釋
# mv etc ../ 移動到rootfs的根目錄
2)、進行一次清理操作
#arm-linux-strip lib/*.so
#arm-linux-strip usr/lib/*.so
3)、編輯etc/profile,添加以下內容
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/nf
export TSLIB_PLUGINDIR=/usr/lib/ts
最後,通過mkyaffs2image 製作鏡像,燒寫鏡像,啟動ts_calibrate校驗觸屏即可。
③ (未完)開發環境:ubuntu18.04 x86_64 qt5.12.12, aarch64 交叉編譯
在構建針對aarch64架構的開發環境時,Ubuntu 18.04 x86_64和Ubuntu 20.04 x86_64平台需要結合VMware進行交叉編譯。首先,確保cmake版本在3.16以上,通過手動下載GitHub上的最新版本並解壓到指定目錄,使用nano編輯器將cmake路徑添加到環境變數中,完成環境配置。驗證cmake版本和gcc/g++版本,然後安裝gcc_aarch64交叉編譯器,解壓並執行相關命令使環境變數生效。
在驗證交叉編譯器安裝成功後,編寫cpp文件並使用交叉編譯器進行編譯,生成的執行文件可以拷貝到如Jetson Nano這樣的aarch64嵌入式設備上運行。實現這一過程的關鍵步驟包括:在Jetson Nano上使用交叉編譯器執行編譯命令,確保目標架構的正確配置。
對於Qt5.12.12的安裝,參考特定的博客指南,下載並完成qt_x64安裝程序,通過GUI界面完成基本安裝。下載源碼並解壓,修改qmake.conf文件以適應aarch64架構的交叉編譯環境。在修改qmake.conf文件後,創建build文件夾並編寫腳本以指定交叉編譯器、sysroot路徑、配置選項以及依賴包的安裝順序。確保腳本執行前安裝必要的庫,如Libxcb、OpenGL、Qt WebKit、Qt WebEngine、Qt Multimedia等。QDoc Documentation Generator Tool也是構建過程中需要考慮的組件。
在執行腳本後,可能遇到未解決的OpenGL編譯問題,可以暫時跳過OpenGL模塊的編譯。對於指定sysroot路徑和從Jetson Nano設備復制sysroot文件到VMware虛擬機中的操作,確保網路連接穩定,使用rsync工具完成文件傳輸。在實際操作中,根據Jetson Nano設備的實際IP地址調整命令參數。
整個過程涉及多個步驟和依賴,關鍵在於正確配置環境變數、交叉編譯器和qmake.conf文件,以及確保所有依賴包的安裝。通過這些步驟,能夠在Ubuntu 18.04和Ubuntu 20.04平台上成功構建針對aarch64架構的開發環境,支持嵌入式系統開發需求。