生活随笔
收集整理的這篇文章主要介紹了
QT源码交叉编译
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
交叉編譯QT 源碼
板子:全志 V3S , arm32位cpu
ubuntu 虛擬機搭建好交叉編譯鏈環境,添加環境變量
ok3399@ubuntu:~$ echo $PATH
/opt/OK3399-linux-release/host/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/
使用arm-linux-gcc -v 確認編譯工具安裝OK
解壓QT源碼
ok3399@ubuntu:/opt/qt/qt-5.13.1S-src$
ls
build.sh LICENSE.FDL qtdatavis3d qtquickcontrols qtwayland
_clang-format LICENSE.GPLv2 qtdeclarative qtquickcontrols2 qtwebchannel
coin LICENSE.GPLv3 qtdoc qtremoteobjects qtwebengine
config.cache LICENSE.LGPLv21 qtgamepad qtscript qtwebglplugin
config.log LICENSE.LGPLv3 qtgraphicaleffects qtscxml qtwebsockets
config.opt LICENSE.QT-LICENSE-AGREEMENT-4.0 qtimageformats qtsensors qtwebview
config.status Makefile qtlocation qtserialbus qtwinextras
config.summary qt3d qtlottie qtserialport qtx11extras
config.tests qtactiveqt qtmacextras qtspeech qtxmlpatterns
configure qtandroidextras qtmultimedia qtsvg README
configure.bat qtbase qtnetworkauth qttools
configure.json qtcharts qt.pro qttranslations
gnuwin32 qtconnectivity qtpurchasing qtvirtualkeyboard
復制 make spec 文件
將 linux-arm-gnueabi-g++ 文件夾 復制為新的 arm-linux-g++(和編譯器同名)文件夾,不要修改qt源碼自帶的。
ok3399@ubuntu:/opt/qt/qt-5.13.1S-src/qtbase/mkspecs$
ls
aix-g++ integrity-armv7 linux-icc-k1om qdevice.pri win32-clang-msvc
aix-g++-64 integrity-armv7-imx6 linux-llvm qmodule.pri win32-g++
android-clang integrity-armv8-rcar linux-lsb-g++ qnx-aarch64le-qcc win32-icc
android-g++ integrity-x86 lynxos-g++ qnx-armle-v7-qcc win32-icc-k1om
arm-linux-g++ linux-aarch64-gnu-g++ macx-clang qnx-x86-64-qcc win32-msvc
common linux-arm-gnueabi-g++ macx-g++ qnx-x86-qcc winrt-arm64-msvc2017
cygwin-g++ linux-clang macx-icc solaris-cc winrt-arm64-msvc2019
darwin-g++ linux-clang-32 macx-ios-clang solaris-cc-64 winrt-arm-msvc2015
devices linux-clang-libc++ macx-tvos-clang solaris-cc-64-stlport winrt-arm-msvc2017
dummy linux-clang-libc++-32 macx-watchos-clang solaris-cc-stlport winrt-arm-msvc2019
features linux-g++ macx-xcode solaris-g++ winrt-x64-msvc2015
freebsd-clang linux-g++-32 modules solaris-g++-64 winrt-x64-msvc2017
freebsd-g++ linux-g++-64 modules-inst unsupported winrt-x64-msvc2019
haiku-g++ linux-icc netbsd-g++ wasm-emscripten winrt-x86-msvc2015
hpuxi-g++-64 linux-icc-32 openbsd-g++ win32-arm64-msvc2017 winrt-x86-msvc2017
hurd-g++ linux-icc-64 qconfig.pri win32-clang-g++ winrt-x86-msvc2019
在copy的make spec 修改 即arm-linux-g++ 下的qmake.conf
ok3399@ubuntu:/opt/qt/qt-5.13.1S-src/qtbase/mkspecs/arm-linux-g++$
ls
qmake.conf qplatformdefs.h
修改后如下,使用交叉編譯器的絕對路徑設置 QMAKE_CC。。。,否則可能會找不到編譯器
MAKEFILE_GENERATOR
= UNIX
CONFIG +
= incremental
QMAKE_INCREMENTAL_STYLE
= sublibinclude
(../common/linux.conf
)
include
(../common/gcc-base-unix.conf
)
include
(../common/g++-unix.conf
)
QMAKE_CC
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-gcc
QMAKE_CXX
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-g++
QMAKE_LINK
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-g++
QMAKE_LINK_SHLIB
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-g++
QMAKE_AR
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-ar cqs
QMAKE_OBJCOPY
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-objcopy
QMAKE_NM
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux-nm -P
QMAKE_STRIP
= /media/user1/V3SSDK_BUILDROOT/v3ssdk/buildroot/out/host/bin/arm-linux--strip
load
(qt_config
)
編寫構建腳本
#!/bin/sh
./configure -confirm-license \-xplatform arm-linux-g++\-opensource \-verbose \-skip qt3d \-skip qtquickcontrols \-skip qtwebchannel \-skip qtactiveqt \-skip qtandroidextras \-skip qtdeclarative \-skip qtimageformats \-skip qtmacextras \-skip qtx11extras \-skip qtxmlpatterns \-skip qtconnectivity \-skip qtdoc \-skip qtgraphicaleffects \-skip qtlocation \-skip qtmultimedia \-skip qtsensors \-skip qttools \-skip qttranslations \-skip qtwayland \-skip qtwebchannel \-skip qtwebengine \-skip qtwinextras \-no-opengl \-widgets \-prefix /opt/qt/qt_v3s
-xplatform 是目標平臺,使用交叉編譯器的名字即可。
-prefix /opt/qt/qt_v3s 編譯后qt存放位置
執行build腳本后,根據提示進行 make , make install 生成文件確認
ok3399@ubuntu:/opt/qt/qt_v3s$
ls
bin doc examples include lib mkspecs plugins
總結
以上是生活随笔為你收集整理的QT源码交叉编译的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。