qt 源码编译

本文介绍了在ARM平台上编译Qt5.15.11开源源码的过程,包括tslib和qt的编译步骤,以及遇到的xcb相关依赖问题的解决方法。还详细说明了如何集成multimedia模块到Qt安装中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载 qt-everywhere-opensource-src-5.15.11.tar.xz:点击跳转

一、编译tslib
1、在configure目录下执行以下命令 
mkdir build
../configure --host=arm-linux-gnueabihf  CC=arm-linux-gnueabi-gcc --prefix=/home/gui/build  //配置
make -j8 && sudo make install

二、编译qt
1、同理,在configure目录下执行以下命令 
mkdir qt-5.15-build
cd qt-5.15-build
./../qt-everywhere-src-5.15.11/configure -prefix /opt/qt5.15 -shared -sql-sqlite -xcb -xcb-xlib -bundled-xcb-xinput -qt-zlib -qt-libpng -qt-libjpeg -no-fontconfig -iconv -nomake tests -nomake examples -skip qt3d   -nomake tools
2、编译
make -j8 && sudo make install

3、配置环境变量
vi ~/.profile 
在最后面输入:
export QTDIR=/opt/qt5.15
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

问题:
ERROR: Feature 'xcb' was enabled, but the pre-condition 'features.thread && libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11' failed.
解决:
sudo apt-get install libxkbcommon* libxcb* libthread*

在执行configure之前,记得先删除config.cache 缓存文件

*********************集成子模块****************************
一、集成multimedia模块
1、下载qtmultimedia模块
2、进入qtmultimedia目录,创建并进入build目录,并执行qmake、make
mkdir build
cd build
/opt/armqt_base/bin/qmake ../*pro
make -j8
3、分别拷贝plugins、lib、include、mkspecs目录到/opt/armqt_base/对应的目录下
sudo cp plugins/  /opt/armqt_base/ -r
sudo cp lib/  /opt/armqt_base/ -r
sudo cp include/  /opt/armqt_base/ -r
sudo cp mkspecs/  /opt/armqt_base/ -r

二、交叉编译最小源码
1、进入qtbase/mkspecs
cd qtbase/mkspecs

2、选择名称与所用编译工具相近的文件夹拷贝一份,重命名为所用编译器名称
cp -a linux-aarch64-gnu-g++/ aarch64-sdrv-linux-g++/

3、修改qmake.conf文件,将编译器需改为当前的编译器
MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

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

clangdefines           += Q_ATOMIC_INT64_IS_SUPPORTED

# modifications to g++.conf
QMAKE_CC                = "/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc --sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux" 
QMAKE_CXX               = "/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-g++ --sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux"
QMAKE_LINK              = "/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-g++ --sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux" 
QMAKE_LINK_SHLIB        = "/opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-g++ --sysroot=/opt/cluster-qt/2.5.3/sysroots/aarch64-sdrv-linux"

# modifications to linux.conf
QMAKE_AR                = /opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-ar cqs
QMAKE_OBJCOPY           = /opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-objcopy
QMAKE_NM                = /opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-nm -P
QMAKE_STRIP             = /opt/cluster-qt/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-strip
load(qt_config)

4、配置
./configure \
-xplatform aarch64-sdrv-linux-g++ \
-verbose \
-opensource \
-release \
-shared \
-confirm-license \
-make libs \
-nomake tests \
-nomake examples \
-skip qtmacextras \
-skip qtandroidextras \
-no-opengl \
-prefix $PWD/build

/*
./configure -prefix $PWD/build \
-opensource -confirm-license -release \
-make libs -xplatform  linux-aarch64-gnu-g++  \
-pch -sql-sqlite -qt-libjpeg -qt-libpng \
-qt-zlib -no-opengl -no-sse2 -no-openssl \
-nomake tests \
-skip qtmacextras \
-skip qtandroidextras \
-no-cups -no-glib -no-iconv -no-separate-debug-info \
-nomake examples -nomake tools -no-pkg-config
*/

5、编译
make -j8 && make install
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值