linux-ubuntu-静态编译Qt-5.14.2
前期准备
- Ubuntu 20.04 64 bit下载安装,作者版本如下图所示
- 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配置编译
- 新建一个Qt安装目录(位置根据个人喜好),本文档使用QT_INSTALL_PATH(需要自行修改成自己的)代替实际的安装目录
- 终端输入“sudo apt-get install build-essential”安装编译环境库
- 解压下载好的Qt源码,tar -xvf qt-everywhere-src-5.14.2.tar.xz
- 进入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
- 执行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
- 配置完成后,执行sudo make -j4开始编译(-j4参数可修改,也可去除),等待编译完成,作者这里编译没有报错
- 编译完成后,执行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
- 编写环境变量配置脚本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
- 终端输入“source envConfig.sh”或者“. envConfig.sh”执行脚本
- 终端输入“qmake -v”查看在任意目录下,环境变量是否生效,结果如下图所示
编写测试demo
- 创建一个新的项目文件夹,如“mkdir hello”
- 进入新创建的文件夹,并创建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();
}
- 终端输入“qmake -project”创建Qt项目(会生成hello.pro文件)
- 修改hello.pro文件,在末尾添加“QT += widgets”(添加位置可自己喜欢)
- 终端输入“qmake hello.pro”生成Makefile文件
- 终端输入make编译
- 运行生成得可执行文件,./hello
- 提示:可能没有任何字符显示,只有一个窗口,这是因为没有字体包,字体包下载地址: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