Qt5.2.1移植海思
1.修改./qtbase/mkspecs下的 qmake.config
以一個linux-arm-test配置目錄為例,將mkspecs目錄下的linux-arm-gnueabi-g++複製為linux-arm-test
cp linux-arm-gnueabi-g++ linux-arm-test –r
修改linux-arm-test配置
cd linux-arm-test
檢視ls /opt/FriendlyARM/toolschain/4.4.3/bin檢視目錄下實際編譯工具鏈名
將linux-arm-test目錄下qmake.config中的arm-linux-gnueabi-開頭都更改為實際路徑加工具鏈名:PATH+arm-none-linux-gnueabi-
如QMAKE_CC = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc
再加入三行:
QT_QPA_DEFAULT_PLATFORM = linuxfb #qpa圖形外掛,
QMAKE_CFLAGS_RELEASE += -O2 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te
說明1:QT_QPA_DEFAULT_PLATFORM選項是指定圖形外掛, Qt5將各平臺底層抽象為一個 qpa 外掛,通常在mac上是cocoa, 在window上是windows, 在linux X11下是xcb, 如果有OPENGL支援, 那麼選eglfs。而對於無硬體加速的裝置,則選擇linuxfb,。 minimal僅僅是讓程式跑通, 不起任何作用
說明2:目標板為新唐N32905U1DN,cpu為arm936ejs,執行arm-linux-gcc –target-help 檢視交叉編譯器所支援的架構,選擇了其中比較接近的一個為armv5te
修改qmake.conf檔案:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental gdb_dwarf_index
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = /opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-strip
load(qt_config)
2.configure配置
可以嘗試如下方法 ,但本人沒試過 :
編譯嵌入式QT5.7.0,配置完成後在make時遇到 ERROR: Unknown module(s) in QT: quick,後將配置檔案加入-skip qtdeclarative解決,完整配置選項如下:
./configure -opensource -shared -xplatform linux-arm-gnueabihf-g++ -qt-zlib -no-opengl -no-openssl -nomake examples -skip qtcanvas3d -skip qt3d -qreal float -skip qtdeclarative -prefix /xilinx/qt5/qt5instll/
3.執行make&&make install
期間會報錯 (大概三次),方法是直接改原始碼,註釋掉錯誤地方
4. 安裝後的問題
Qt5 背景透明顯示問題
qt4 可以通過 QWSServer::setBackground(QColor(0, 0, 0, 0)) 設定背景透明,
但是qt5裡面沒有這個了,現在程式執行到qt5去掉這段程式碼後,在arm 上面跑背景是為黑色的,
qt5 應該怎麼設定才能讓背景透明。
已經解決,在arm上跑用的是linuxfb平臺,需要更改兩個地方。
1. 在qtbase\src\platformsupport\fbconvenience\qfbscreen.cpp中將
mCompositePainter->fillRect(rect, Qt::black);
更改為
mCompositePainter->setCompositionMode(QPainter::CompositionMode_Source);
mCompositePainter->fillRect(rect, Qt::transparent);
mCompositePainter->setCompositionMode(QPainter::CompositionMode_SourceOver);
2. 在qtbase\src\plugins\platforms\linuxfb\qlinuxfbscreen.cpp中將
mBlitter->drawImage(rects, *mScreenImage, rects);
更改為
mBlitter->setCompositionMode(QPainter::CompositionMode_Source);
mBlitter->drawImage(rects[i], *mScreenImage, rects[i]);
mBlitter->setCompositionMode(QPainter::CompositionMode_SourceOver);
#配置qt外掛以及執行環境
將安裝軟體目錄下的plugins拷貝到目標板。
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins #qt外掛載入目錄
export QT_QPA_PLATFORM=linuxfb:tty=/dev/tty0 #qt圖形外掛平臺
export QT_QPA_FONTDIR=$QTDIR/lib/fonts #qt字型庫目錄
參考文章:點選開啟連結
相關文章
- ffmpeg在移植到海思HI35xx平臺之將ffmpeg庫引入到sample的demo中
- 海思hi3519dv500,hi3516dv500移植yolov8-模型處理YOLO模型
- FFmpeg開發筆記(十):ffmpeg在ubuntu上的交叉編譯移植到海思HI35xx平臺筆記Ubuntu編譯
- libx264開發筆記(一):libx264介紹、海思平臺移植編譯筆記編譯
- OpenCV開發筆記(七十四):OpenCV+ffmpeg交叉編譯移植到海思平臺Hi35xx平臺OpenCV筆記編譯
- OpenCV開發筆記(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉編譯移植到海思平臺Hi35xx平臺OpenCV筆記編譯
- ncurses庫移植
- uboot移植rtcboot
- 【7集iCore3基礎視訊】7-7 Qt5.2.1安裝QT
- GPUImage移植總結GPUUI
- nginx移植記錄Nginx
- kvm移植技術
- 資料移植文件
- LWIP裸機移植
- 系統移植存放位置
- OpenHarmony Docker移植實踐Docker
- 移植到 Python 3Python
- 海思Hi3559 datasheet資料介紹
- 在海思晶片上使用GDB遠端除錯晶片除錯
- 華為處理器為什麼叫海思麒麟?
- 海思hi3536 PCIE級聯應用指南
- 海思HI3751V600使用者指南
- Chrome移植Win10 on ARMChromeWin10
- 5. U-Boot移植boot
- Ubuntu成功移植Xperia Tablet ZUbuntu
- uboot移植i2cboot
- Oracle向PostgresQL移植例項OracleSQL
- Java 的可移植性 (轉)Java
- 2.12.uboot的移植2-從uboot官方標準uboot開始移植boot
- 海思HI3751 Android 待機開發指南Android
- 海思HI3751 Android升級開發指南Android
- 海思Hi3521/Hi3520A/Hi3520D/Hi3515A/Hi3515C U-boot移植應用開發指南boot
- mp4v2開發筆記(一): mp4v2庫介紹,mp4v2在ubuntu上交叉編譯移植到海思Hi35xx平臺筆記Ubuntu編譯
- Vulkan移植GPUImage的安卓Demo展示GPUUI安卓
- 可移植的python環境Python
- 移植到Windows CE 的經驗Windows
- Polar 投影c#版本移植C#
- alsa 移植到Linux3.0Linux