qt-5.11.3交叉编译

ops/2024/11/17 18:59:08/

准备环境和工具

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 -ysudo apt install qml-module-qtquick-xmllistmodel -ysudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -ysudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -ysudo 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 = sublibinclude(../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 fallbackreturn 0;}
#endif // Q_OS_WINRTtypedef 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博客


http://www.ppmy.cn/ops/134502.html

相关文章

单片机 串口实验 实验五

实验五 串口实验 一、实验目的 1、掌握MCS-51单片机串口通信的原理。 2、掌握MCS-51单片机串口通信程序的设计方法及其过程。 3、掌握MCS-51单片机串口通信的电路应用。 二、实验任务 两片单片机分别接一个按键和两个数码管&#xff0c;通过串口通信&#xff0c;实现单…

【学习】HTTP

HTTP 超文本传输协议&#xff08;HTTP&#xff09;是一个用于传输超媒体文档&#xff08;例如 HTML&#xff09;的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的&#xff0c;但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型&#xff0c;客户端打开…

C/C++ 中有哪些类型转换方式? 分别有什么区别?

在C编写C/C代码的时候&#xff0c;我们经常会遇到发生类型转换的场景&#xff0c;比如 赋值运算符的两个操作数不同、实参和形参类型不同、函数返回值类型和接收返回值的类型不同&#xff0c;都会发生类型转换&#xff1b;所以&#xff0c;在C语言中提供了两种类型转换 —— 隐…

CSM32RV20:RISC-V核的低功耗MCU芯片,常用在智能门锁上

CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 内置RISC-V RV32IMAC内核&#xff08;2.6CoreMark/MHz&#xff09;&#xff1b; 蕞高32MHz工作频率&#xff1b; 内置4kB的SRAM&#xff1b; 内置8B的ALWAYS寄存器&#xff0c;能在掉电模式2下保存数据&#xff1b; 内置40kB的嵌…

【Rust调用Windows API】获取正在运行的全部进程信息

前言 WIndows API官方文档 提供了C的调用示例&#xff0c;最近想尝试用Rust去实现&#xff0c;本系列博客记录一下实现过程。 依赖 Rust调用Windows API需要引入依赖winapi&#xff0c;在Cargo.toml中添加依赖 winapi "0.3.9"调用不同的API集就需要使用相应的功…

Python - 初识Python;Python解释器下载安装;Python IDE(一)

一、初识Python Python 是一种高级编程语言&#xff0c;Python是一种面向对象的解释型计算机程序设计语言&#xff0c;Python由荷兰国家数学与计算机科学研究中心的吉多范罗苏姆&#xff08;&#xff09;Guido van Rossum吉多范罗苏姆&#xff08;&#xff09;于1989 年底发明…

羊城杯2020Easyphp

审题 看到url&#xff0c;可以想到伪协议读取 尝试过后可以发现&#xff0c;题目绕过了read后面的编码 我们可以尝试双重urlencode进行绕过 ?filephp://filter/read%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%…

react 中 memo 模块作用

memo是一个用于优化组件性能的高阶组件。 一、避免不必要的重新渲染 1. 浅比较机制原理 1.1 组件渲染触发条件 在 React 中&#xff0c;当组件的props或state发生变化时&#xff0c;组件会重新渲染。然而&#xff0c;在某些情况下&#xff0c;即使父组件重新渲染并传递给子…