静态编译Qt-5.14.2成功案例

linux-ubuntu-静态编译Qt-5.14.2

  • 前期准备
  • 开始Qt-5.14.2配置编译
  • 编写测试demo
  • 结尾

前期准备

  1. Ubuntu 20.04 64 bit下载安装,作者版本如下图所示
    静态编译Qt-5.14.2成功案例_第1张图片
  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 
#include 

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 
#include 
#include 

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

你可能感兴趣的:(技术,linux,qt,ubuntu,gcc/gdb编译调试,windows)