栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

QT源码交叉编译

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

#
# 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)

    编写构建脚本
#!/bin/sh
./configure -/confirm/i-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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号