QT源码交叉编译

交叉编译QT 源码

板子:全志 V3S , arm32位cpu

  1. 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/
  1. 使用arm-linux-gcc -v 确认编译工具安装OK
    在这里插入图片描述

  2. 解压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

  1. 复制 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

  1. 在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。。。,否则可能会找不到编译器

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.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++

# modifications to linux.conf
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)

  1. 编写构建脚本, 在 src 目录下,地步可以看到 我的 build.sh
#!/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 是目标平台,使用交叉编译器的名字即可(第六步 mkspc 文件夹名字)。
-prefix /opt/qt/qt_v3s 编译后qt存放位置

  1. 执行build脚本后,根据提示进行 make , make install 生成文件确认
ok3399@ubuntu:/opt/qt/qt_v3s$ ls
bin  doc  examples  include  lib  mkspecs  plugins
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值