静态编译Qt-5.14.2成功案例

前期准备

  1. Ubuntu 20.04 64 bit下载安装,作者版本如下图所示
    在这里插入图片描述
  2. Qt5.14.2下载
    下载地址:http://download.qt.io/archive/qt/
    选择single版本的qt-everywhere-src-5.14.2.tar.xz下载,下载完成后,需要于纯linux环境中解压,解压命令tar –xvf qt-everywhere-src-5.14.2.tar.xz

开始Qt-5.14.2配置编译

  1. 新建一个Qt安装目录(位置根据个人喜好),本文档使用QT_INSTALL_PATH(需要自行修改成自己的)代替实际的安装目录
  2. 终端输入“sudo apt-get install build-essential”安装编译环境库
  3. 解压下载好的Qt源码,tar -xvf qt-everywhere-src-5.14.2.tar.xz
  4. 进入Qt源码根目录,创建autoConfigure.sh配置脚本,并写入以下内容(若自行修改,需注意空格,其中configure的配置参数还有很多,可以使用./configure -help > configHelp.txt重定向到文档中查看,配置自己需要的,参数的解释可在百度中搜索,注意最后还是要参考./configure -help,这个才是最标准的
#! /bin/bash

QT_INSTALL_PATH="-prefix /home/xxx"     #Qt安装路径(自己修改)
QT_COMPLIER+="-platform linux-g++-64"  #编译器

CONFIG_PARAM+="-static "               #静态编译
CONFIG_PARAM+="-release "             #编译release
CONFIG_PARAM+="-recheck-all "
CONFIG_PARAM+="-nomake examples "    #不编译examples
CONFIG_PARAM+="-nomake tests "        #不编译tests

CONFIG_PARAM+="-qt-xcb "

#选择Qt版本(开源, 商业), 并自动确认许可认证
CONFIG_PARAM+="-opensource "         #编译开源版本, -commercial商业版本
CONFIG_PARAM+="-confirm-license "      #自动确认许可认证

echo "./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH"
./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH
  1. 执行sudo ./autoConfigure.sh,等待配置完成,可能会报以下错误,并给出了解决方法

错误:ERROR: The OpenGL functionality tests failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2],
QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.
解决方法:sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

错误:ERROR: Feature ‘xcb’ was enabled, but the pre-condition ‘features.thread && features.xkbcommon && libs.xcb’ failed
解决方法:sudo apt-get install libxkbcommon-x11-dev

错误:ERROR: Feature ‘fontconfig’ was enabled, but the pre-condition ‘!config.msvc && features.system-freetype && libs.fontconfig’ failed
解决方法:sudo apt-get install libfontconfig1-dev

  1. 配置完成后,执行sudo make -j4开始编译(-j4参数可修改,也可去除),等待编译完成,作者这里编译没有报错
  2. 编译完成后,执行sudo make install安装,安装路径为QT_INSTALL_PATH,可能会报以下错误

错误:Project ERROR: Building QtQml requires Python
解决方法:sudo apt-get install python3
sudo ln -s /usr/bin/python3 /usr/bin/python

错误:Project ERROR: xcb-xfixes development package not found
解决方法:sudo apt-get install libxcb-xfixes0-dev libxcb-util-dev

错误:Project ERROR: Unknown module(s) in QT_PRIVATE: serialport
解决方法:sudo apt-get install libqt5serialport5 libqt5serialport5-dev

  1. 编写环境变量配置脚本envConfig.sh,内容如下
#! /bin/bash

QTDIR=/home/xxx    #实际安装路径(QT_INSTALL_PATH)

PATH=$QTDIR/bin:$PATH     
MANPATH=$QTDIR/doc/man:$MANPATH     
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH     

export QTDIR PATH MANPATH LD_LIBRARY_PATH
  1. 终端输入“source envConfig.sh”或者“. envConfig.sh”执行脚本
  2. 终端输入“qmake -v”查看在任意目录下,环境变量是否生效,结果如下图所示
    在这里插入图片描述

编写测试demo

  1. 创建一个新的项目文件夹,如“mkdir hello”
  2. 进入新创建的文件夹,并创建hello.cpp文件,“gedit hello.cpp”,并填入以下内容
#include <QApplication>
#include <QLabel>

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    QLabel *label = new QLabel("Hello Qt");
    label->show();
    return app.exec();
}
  1. 终端输入“qmake -project”创建Qt项目(会生成hello.pro文件)
  2. 修改hello.pro文件,在末尾添加“QT += widgets”(添加位置可自己喜欢)
  3. 终端输入“qmake hello.pro”生成Makefile文件
  4. 终端输入make编译
  5. 运行生成得可执行文件,./hello
  6. 提示:可能没有任何字符显示,只有一个窗口,这是因为没有字体包,字体包下载地址:https://mirrors.tuna.tsinghua.edu.cn/ctan/fonts/dejavu/truetype/
    1) 可在安装目录的lib目录下创建fonts文件夹并放入.ttf的字体包即可解决
    2) 更改hello.cpp文件,主动加载字体包,修改内容如下
#include <QApplication>
#include <QFontDatabase>
#include <QLabel>

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    
    int fontId = QFontDatabase::addApplicationFont("./xxxx.ttf");//对应字体包
	if (fontId != -1) {
		QFont m_font("Source Han San");
		app.setFont(m_font);
	}
    
    QLabel *label = new QLabel("Hello Qt");
    label->show();
    return app.exec();
}

结尾

作者可能还有很多不足货有问题的地方,欢迎网友们留言提出,一起学习成长。
2020年10月10日 ---- li

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要在QT静态编译中包含OpenSSL支持,您需要在重新配置QT源代码时添加“-openssl-linked”选项,并将OpenSSL库路径传递给“-openssl”选项。例如,以下是在Ubuntu编译QT 5.15.2静态版本,同时包括OpenSSL的示例命令: 1. 下载OpenSSL 在 https://www.openssl.org/source/ 下载源码包,例如 openssl-1.1.1i.tar.gz 2. 解压并编译OpenSSL 解压 openssl-1.1.1i.tar.gz 至 /usr/local/src/ ``` cd /usr/local/src/openssl-1.1.1i/ ./config --prefix=/usr/local/openssl-1.1.1i --openssldir=/usr/local/openssl-1.1.1i make -j8 make install ``` 以上命令将编译并安装OpenSSL到 /usr/local/openssl-1.1.1i 目录下。 3. 重新配置QT源代码 在重新配置QT源代码时,您需要添加以下选项: ``` ./configure -prefix /opt/qt-static-openssl -static -release -opensource -confirm-license -no-sql-sqlite -no-icu -no-opengl -no-gtkstyle -no-pch -no-dbus -openssl-linked -openssl /usr/local/openssl-1.1.1i -nomake examples -nomake tests ``` 在上面的命令中,我们添加了“-openssl-linked”选项,以便将OpenSSL库静态链接到QT二进制文件中。我们还使用“-openssl”选项指定了OpenSSL库的路径。 4. 编译QT源代码 然后,您可以使用以下命令编译QT源代码: ``` make -j8 ``` 这将使用8个线程并行编译QT源代码。整个编译过程可能需要一些时间,具体时间取决于您的计算机性能和QT源代码的大小。 5. 测试QT静态版本是否包含OpenSSL 编译完成后,您可以使用以下命令来测试QT静态版本是否包含OpenSSL: ``` ldd /opt/qt-static-openssl/bin/qmake | grep ssl ``` 如果输出中包含“libssl.so”,则表示QT静态版本已经包含了OpenSSL支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值