自学内容网 自学内容网

qt-5.11.3交叉编译

准备环境和工具

1、主机环境 ubuntu20

2、交叉编译器 gcc-linaro-6.3.1..arm-linux-gnuebihf

3、QT5源码包qt-5.11.3_sources

下载qt-5.11.3的包需要先带网络代理软件,再访问下载目录就可以显示了。

Index of /archive/qt

4、依赖库安装

   sudo apt install g++ make qt3d5-dev-tools -y
   sudo apt install qml-module-qtquick-xmllistmodel -y
   sudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -y
   sudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -y
   sudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y

4、解包交叉编译器和qt源码

tar -xvf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar

可以选择将gcc编译器,移动到opt目录下

tar -xvf qt-everywhere-src-5.11.3.tar.xz
cd qt-everywhere-src-5.11.3

 

5、修改qmake.conf

路径: qt-everywhere-src-5.11.3/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

#
# 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                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts

# modifications to linux.conf
#交叉编译工具
QMAKE_AR                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-strip
load(qt_config)

#tslib路径(交叉编译库)
QMAKE_INCDIR=/opt/tslib-1.21/include
QMAKE_LIBDIR=/opt/tslib-1.21/lib

6、configure配置脚本文件

为了防止代码污染,可以先新建一个build目录

mkdir build && cd build
#!/bin/sh
./configure \
-prefix /opt/rk3288/qt-5.11.3/ \
-xplatform linux-arm-gnueabi-g++ \
-gui \
-widgets \
-release \
-opensource \
-confirm-license \
-no-openssl \
-no-opengl \
-skip qtdeclarative #这行是可选的,加上会不编译qml quick模块,需要就删掉这一行

7、特别说下 -skip qtdeclarative这一条,名字很坑完全看不出和quick有什么关系,网上很多都说编译会报错就加上这个,也可能是因为用不到quick为了缩小体积,很多配置文件都把这个给加上了,但是这个是qml quick模块,需要这部分功能的一定不要加,而且我这边编译也没报错。

8、build

make -j8
sudo make -j8 install

9、编译报错处理

1),error1 :qt-everywhere-src-5.11.3/qtbase/src/corelib/global/qrandom.cpp:455:62: error: no matching function for call to ‘std::mersenne_twister_engine

方法:在qrandom.cpp 的219行,增加一条定义 typedef quint32 result_type;

qsizetype fillBuffer(void *, qsizetype) Q_DECL_NOTHROW
    {
        // always use the fallback
        return 0;
    }
#endif // Q_OS_WINRT
    typedef quint32 result_type;
    static SystemGenerator &self();
    void generate(quint32 *begin, quint32 *end) Q_DECL_NOEXCEPT_EXPR(FillBufferNoexcept);

2),error: ‘SIOCGSTAMP’ undeclared (first use in this function); did you mean ‘SIOCGARP’?
解决:找到socketcanbackend.cpp并打开,添加头文件#include <linux/sockios.h>即可解决问题
3),python: not found
解决:在终端输入命令sudo ln -s /usr/bin/python3 /usr/bin/python 将Python和Python3连接到一起
4),缺少 libxcb*
解决:sudo apt-get install libxcb*
 

10、参考文章

交叉编译qt5.11.3源码(不带opengl)_libts包 qt-CSDN博客

QT源码版本5.11.3 (qt-everywhere-src-5.11.3)编译过程中错误,内部bug._qt5.11.3-CSDN博客

Ubuntu20.04安装Qt5.9.9+Qt creator并编译Qt库,解决SIOCGSTAMP was not declared-CSDN博客


原文地址:https://blog.csdn.net/yuxipro/article/details/143715339

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!