Ubuntu 20.04下Qt5静态编译失败求助:求步骤及依赖库
Ubuntu 20.04 静态编译 Qt5 完整指南
一、安装全部依赖
先执行以下命令安装所有必要的编译工具和依赖库,避免因缺失依赖导致编译失败:
sudo apt update && sudo apt install -y build-essential libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev libgl1-mesa-dev libglu1-mesa-dev
如果需要编译QtWebEngine,额外安装这些工具:
sudo apt install -y gperf bison flex ruby python3-pip pip3 install jinja2 lxml
二、下载并解压Qt5源码
推荐选择LTS版本(如5.15.2),稳定性更高:
wget https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz tar -xf qt-everywhere-src-5.15.2.tar.xz cd qt-everywhere-src-5.15.2
三、配置静态编译参数
执行configure命令时,务必指定正确的参数,以下是经过验证的通用配置(可根据需求调整):
./configure -prefix /opt/qt5-static \ -static \ -release \ -opensource \ -confirm-license \ -nomake examples \ -nomake tests \ -skip qtwebengine \ -qt-zlib \ -qt-libpng \ -qt-libjpeg \ -qt-freetype \ -qt-pcre \ -qt-xcb \ -no-opengl \ -no-cups \ -no-gif \ -no-accessibility
参数说明:
-prefix /opt/qt5-static:指定静态Qt的安装路径,后续项目构建时会用到-static:核心参数,开启静态编译模式-nomake examples/tests:跳过示例和测试代码,大幅缩短编译时间-skip qtwebengine:WebEngine编译耗时极长且依赖复杂,无需该模块可直接跳过-no-opengl:若不需要OpenGL支持可关闭,需要则改为-opengl desktop
四、编译并安装
使用多线程编译加速($(nproc)会自动匹配CPU核心数):
make -j$(nproc) sudo make install
五、验证静态编译结果
创建一个简单的测试项目,确认编译后的Qt为静态版本:
- 编写
main.cpp:
#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Hello Static Qt!"); label.show(); return app.exec(); }
- 编写
test.pro:
QT += core gui widgets TARGET = static-test TEMPLATE = app SOURCES += main.cpp
- 用静态Qt的qmake构建:
/opt/qt5-static/bin/qmake test.pro make
- 验证:运行
./static-test能正常显示窗口,再执行ldd ./static-test,若输出not a dynamic executable或无Qt相关动态库依赖,说明静态编译成功。
注意事项
- 若configure阶段报错,仔细查看终端输出的错误信息,通常会明确提示缺失的库,对应安装即可
- 编译前确保系统内存充足,编译完整Qt(含WebEngine)至少需要8GB内存,否则可能因内存不足中断
- 建议在源码目录外创建单独的build目录编译(如
mkdir build && cd build && ../configure ...),方便后续清理
内容的提问来源于stack exchange,提问作者Dipak
相关产品推荐
相关产品推荐

