当前位置: 首页 > news >正文

ubuntu18.04编译qt5.14.2源码

ubuntu18.04编译qt5.14.2源码

文章目录

  • ubuntu18.04编译qt5.14.2源码
    • @[toc]
    • 1 前言
    • 2 参考文档
    • 3 下载源码
      • 3.1 方法1
      • 3.2 方法2
      • 3.3 方法3
    • 4 ubuntu编译qt源码
      • 4.1 环境准备
      • 4.2 设置交换分区大小
      • 4.3 编译源码
      • 4.4 添加环境变量
      • 4.5 验证编译结果
      • 4.6 编译帮助文档(qch)
      • 4.7 编译QtCreator
    • 5 help
      • 5.1 顶层安装目录
      • 5.2 安装目录布局微调
      • 5.3 Configure 元选项
      • 5.4 构建选项
      • 5.5 构建环境
      • 5.6 组件选择
      • 5.7 核心选项
      • 5.8 日志后端
      • 5.9 网络选项
      • 5.10 图形、打印、控件选项
      • 5.11 平台后端
      • 5.12 输入后端
      • 5.13 图像格式
      • 5.14 数据库选项
      • 5.15 Qt3D 选项
      • 5.16 其他图像格式选项
      • 5.17 多媒体选项
      • 5.18 QtQuick3D 选项
      • 5.19 TextToSpeech 选项
      • 5.20 WebEngine 选项
    • 6 问题记录
      • 6.1 `WARNING: QDoc will not be compiled,`
      • 6.2 `WARNING: QtWebEngine will not be built.`
      • 6.3 `Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.`
      • 6.4 `Project ERROR: Building QtQml requires Python.`
      • 6.5 `class numeric_limits<QT_PREPEND_NAMESPACE(qfloat16)>`
      • 6.6 内存不足`No space left on device`
      • 6.7 `error: ‘runtime_error’ is not a member of ‘std’`
      • 6.8 `error: ‘int32_t’ was not declared in this scope`
      • 6.9 `Project ERROR: Missing archive files from QtWebEngineCore linking pri`
      • 6.10 `WARNING: Static builds of QtWebEngine are not supported.`
      • 6.11 编译帮助文档报错`Error parsing JSON at 1:1: illegal value`
      • 6.12 `ninja: build stopped: subcommand failed.`
      • 6.13 `error: xpath_grammar. hh: No such file or directory`
      • 6.14 缺少ninja报错
      • 6.15 `style.SortIncludes = false;`
      • 6.16 ubuntu22.04编译qtwebengine后无法打开html
      • 6.17 `undefined reference to pthread_create`

更多精彩内容
👉内容导航 👈
👉Qt开发经验 👈
👉Qt 👈

1 前言

本文演示了在ubuntu中编译Qt5.14.2源码,包含了Qt库、Qt帮助文档、QtWebEngine、qtcreator等,支持动态编译、静态编译;

编译Qt源码最重要的是需要看支持环境;

  1. 第一步:系统是否支持,不支持的系统也可以编译,不过编译过程中会出现各种问题,解决起来很复杂,例如在ubuntu22.04中编译Qt5.14.2就可以编译,但是问题很多;
  2. 第二步:编译器、构建工具、依赖库版本是否支持,最好选择推荐版本或者相差不大版本,否则肯定出问题,并且官方文档说的版本不一定可靠,有些版本不能按qt官方文档来;
  3. 第三步:新手不要编译QtWebEngine,编译时间长、硬件要求高、问题多;
  4. 第四步:先完成动态编译再考虑静态编译,静态编译问题比动态编译多;
  5. 满足了这几步后,基本上90%问题就没有了。

2 参考文档

系统版本:

  • 适用于 Linux/X11 的 Qt |第 5.15 期

  • 适用于 Linux/X11 的 Qt |第 5.14 季度

  • 支持的平台 |第 5.14 季度

  • 支持的平台 |第 5.15 期

构建Qt源码:

  • Qt for X11 要求 |第 5.14 季度

  • 从Git构建Qt 5 - Qt Wiki

  • 从Git构建Qt 6 - Qt Wiki

  • Building Qt Sources | Qt 5.15

  • Building Qt Sources | Qt 6.8

Qt构建选项:

  • Qt 配置选项 |第 5.15 期

构建Qtcreator:

  • 从 Git 构建 Qt Creator - Qt Wiki

  • 在 Ubuntu 22.04 上从 Git 构建 Qt Creator - Qt Wiki

构建Qt帮助文档:

  • 为 QDoc 安装 Clang |QDoc 手册 5.14.2
  • 构建 Qt 文档 - Qt Wiki

构建QtWebEngine:

  • QtWebEngine - Qt Wiki

  • QtWebEngine/Qt5Build - Qt Wiki

  • QtWebEngine/Chromium版本 - Qt Wiki

  • chromium Linux构建说明

clang下载:

  • Index of /development_releases/prebuilt/libclang/qt
  • LLVM 下载页面
  • 发布 ·llvm/llvm 项目

3 下载源码

3.1 方法1

  • 进入github下载;
  • 或者使用git clone https://github.com/qt/qt5.git或者git clone https://code.qt.io/qt/qt5.git下载;
  • 然后使用git tags查看版本;
  • 使用git checkout v5.14.2切换版本;
  • 使用perl init-repository下载子仓库,或者使用git submodule update --init --recursive

3.2 方法2

  • 进入Index of /official_releases/qt下载新版本qt源码;

  • 或者进入Index of /archive/qt下载旧版本qt源码;

  • 不过国内被屏蔽了,可能无法访问;

  • 如下所示,下载源码;

    在这里插入图片描述

3.3 方法3

  • 安装Qt时勾选source;

  • 然后进入Qt安装路径下,src文件夹内就是源码。

    在这里插入图片描述

4 ubuntu编译qt源码

环境说明
系统ubuntu18.04(推荐)、ubuntu22.04
qt源码5.14.2
g++>=7(注意:如果编译QtWebEngine使用11以上版本编译会失败)
git>=1.6
perl>=5.14
python>=2.6
clang>=8
  • 注意:使用ubuntu22.04编译Qt源码正常,但是编译QtWebEngine后无法加载html,并且编译源码过程中报错比较多。

4.1 环境准备

# 高版本系统需要将python改成python2,将g++改为g++-7或者g++-9
sudo apt-get install build-essential perl python3 python git g++ 
sudo ln /usr/bin/python2 /usr/bin/python  # 将python2创建链接为python,防止找不到
# Libxcb 的
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
# Qt WebKit(Qt WebKit)
sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
# Qt Web引擎
sudo apt-get install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs flex 
#Qt多媒体
sudo apt-get install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev
# QDoc文档生成(注意版本)
sudo apt install clang libclang-dev
#或者指定使用-9版本
sudo apt install clang-9 libclang-9-dev# 完整依赖
sudo apt install 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-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev  libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev

4.2 设置交换分区大小

  • 当多线程编译时,内存和交换分区消耗会很大,以16线程编译为例子,26G略显不足;

  • 当内存不足是,容易导致ninja报错。

  • 在 Ubuntu 上设置 swap(交换分区/交换文件)大小,可以按照以下步骤操作:

    1. 查看当前 swap 情况

      swapon --show
      free -h
      
    2. 关闭并删除现有 swap(如果需要调整大小)

      sudo swapoff -a
      sudo rm /swapfile
      
    3. 创建新的 swap 文件(以 4G 为例)

      sudo fallocate -l 4G /swapfile
      sudo chmod 600 /swapfile
      sudo mkswap /swapfile
      sudo swapon /swapfile
      
    4. 设置开机自动挂载:编辑 /etc/fstab 文件,添加如下内容(如果已存在则修改):

      /swapfile none swap sw 0 0
      
    5. 再次确认 swap

      swapon --show
      free -h
      
    6. 可选:调整 swappiness(影响 swap 使用频率)

      sudo sysctl vm.swappiness=10
      
  • 如果设置sudo swapon /swapfile时报错:swapon: /swapfile: read swap header failed则从头再设置。

4.3 编译源码

mkdir build
cd build
export LLVM_INSTALL_DIR=/usr/lib/llvm-9 # 设置llvm环境变量(临时),也可以加入.bashrc文件
# 编译静态库(不编译QtWebEngine)
../configure -developer-build -opensource -nomake examples -nomake tests -skip qtwebengine --prefix=/opt/qt5.14.2/ -static  -release  -force-debug-info -separate-debug-info 
# 编译动态库(不编译QtWebEngine)
../configure -developer-build -opensource -nomake examples -nomake tests -skip qtwebengine --prefix=/opt/qt5.14.2/  -release -force-debug-info -separate-debug-info 
# 编译动态库(编译QtWebEngine)
../configure -developer-build -opensource -nomake examples -nomake tests --prefix=/opt/qt5.14.2/  -release -force-debug-info -separate-debug-info
#加速编译,如果ninja报错了就改成-j1显示错误信息
export NINJAJOBS="-j8"
make -j8
make install

4.4 添加环境变量

export PATH="/opt/qt5.14.2/bin:$PATH"
export LD_LIBRARY_PATH="/opt/qt5.14.2/lib:$LD_LIBRARY_PATH"

4.5 验证编译结果

  • 准备一个Qt程序源码;

  • test.pro

    QT       += core gui
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    CONFIG += c++17
    SOURCES +=  main.cpp
    
  • main.cpp

    #include <QApplication>
    #include <QWidget>int main(int argc, char* argv[])
    {QApplication a(argc, argv);QWidget w;w.show();return a.exec();
    }
    
  • 运行/opt/qt5.14.2/bin/qmake Test.pro命令生成Makefile文件;

  • 运行make编译;

  • 运行./Test运行程序;

  • 使用ldd ./Test查看可执行程序依赖,如下图所示依赖中没有Qt库,证明静态编译成功;

    在这里插入图片描述

  • 如下图所示:QtWebEngine编译运行成功,演示代码

    在这里插入图片描述

4.6 编译帮助文档(qch)

  • 编译前提:

    • 查看构建要求:构建 Qt 文档 - Qt Wiki
    • Qt源码构建完成,并且构建了qttools子工程;
    • 使用ls /opt/qt5.14.2/bin查看编译后成功生成了qdoc可执行程序;
  • 构建命令:

    # 进入qt源码路径
    mkdir build
    cd build
    # 不是必要,如果报错,则更具报错信息使用-skip跳过对应子工程
    ../configure -opensource -make libs -skip qtwebengine -skip qttools -skip qtdeclarative --prefix=/opt/qt5.14.2/ make docs
    make install_docs
    
  • 编译成功后如下所示:

    在这里插入图片描述

    在这里插入图片描述

4.7 编译QtCreator

  • 编译前提:

    • github下载源码
    • 或者Index of /archive/qtcreator、Index of /official_releases/qtcreator下载源码;
    • 然后查看源码中的README.md中的编译说明;

    在这里插入图片描述

    • 注意:如果编译Qt源码时没有编译QtWebEngine则无法编译QtCreator;
    • 使用sudo apt install cmake cmake-gui安装cmake;
    • 由于ubuntu中apt安装默认最高只有10,而使用clang10以下版本会报错;
    • 进入github下载clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz
    • 解压到本地;
  • 开始编译:

    • 将qtcreator源码中的CMakeLists.txt拖进cmake中,点击【Configure】,选择Makefile;

      在这里插入图片描述

    • Clang-DIRLLVM_DIR设置为解压的clang路径;

    在这里插入图片描述

    • 修改CMAKE_INSTALL_PREFIX设置安装路径;
    • 点击【Configure】【Generate】;
    • 然后打开终端进入qtcreator/build路径;
    • 运行makemake install
    • 打开.bashrc,添加环境变量;
    export PATH="/opt/qtcreator/bin:$PATH"
    export LD_LIBRARY_PATH="/opt/qtcreator/lib:$LD_LIBRARY_PATH"
    
  • 验证结果;

    • 编译完成后进入bin文件夹;
    • 运行./qtcreator

    在这里插入图片描述

5 help

用法: configure [options] [assignments]

Configure 支持在命令行中像 VAR=value 这样的变量赋值。每个大写的库名(可通过 -list-libraries 获取)支持后缀 _INCDIR、_LIBDIR、_PREFIX(INCDIR=PREFIX/include, LIBDIR=PREFIX/lib)、_LIBS,以及在 Windows 和 Darwin 上的 _LIBS_DEBUG 和 _LIBS_RELEASE。例如:
ICU_PREFIX=/opt/icu42 ICU_LIBS=“-licui18n -licuuc -licudata”。

也可以操作任何 QMAKE_* 变量,以修正 mkspec 中 Qt 自身构建的值,例如:QMAKE_CXXFLAGS+=-g3。

注意,_LIBS 和 QMAKE_* 赋值操作的是列表,因此包含元字符(尤其是空格)的项需要按照 qmake 规则加引号。此外,整个赋值还需要按照 shell 规则加引号。推荐内部使用单引号,外部使用双引号。

5.1 顶层安装目录

选项说明
-prefix <dir>部署目录,目标设备可见。默认:/usr/local/Qt-$QT_VERSION;如果使用 -developer-build,则为 qtbase 构建目录
-extprefix <dir>主机可见的安装目录。默认:SYSROOT/PREFIX
-hostprefix [dir]构建工具在主机上的安装目录。如果未指定 [dir],则使用当前构建目录。默认:EXTPREFIX
-external-hostbindir <path>针对本机构建的 Qt 工具路径。当 -platform 与当前系统不符时使用,例如 Canadian Cross Build。

5.2 安装目录布局微调

  • (除 -sysconfdir 外,所有目录应位于 -prefix/-hostprefix 下)
选项说明
-bindir <dir>可执行文件目录,默认:PREFIX/bin
-headerdir <dir>头文件目录,默认:PREFIX/include
-libdir <dir>库文件目录,默认:PREFIX/lib
-archdatadir <dir>架构相关数据目录,默认:PREFIX
-plugindir <dir>插件目录,默认:ARCHDATADIR/plugins
-libexecdir <dir>辅助程序目录,Windows 默认:ARCHDATADIR/bin,其他平台:ARCHDATADIR/libexec
-importdir <dir>QML1 导入目录,默认:ARCHDATADIR/imports
-qmldir <dir>QML2 导入目录,默认:ARCHDATADIR/qml
-datadir <dir>架构无关数据目录,默认:PREFIX
-docdir <dir>文档目录,默认:DATADIR/doc
-translationdir <dir>翻译文件目录,默认:DATADIR/translations
-sysconfdir <dir>Qt 程序使用的设置目录,默认:PREFIX/etc/xdg
-examplesdir <dir>示例目录,默认:PREFIX/examples
-testsdir <dir>测试目录,默认:PREFIX/tests
-hostbindir <dir>主机可执行文件目录,默认:HOSTPREFIX/bin
-hostlibdir <dir>主机库文件目录,默认:HOSTPREFIX/lib
-hostdatadir <dir>qmake 使用的数据目录,默认:HOSTPREFIX

其余选项的约定:当选项说明后跟有值列表时,含义如下:

  • yes 表示仅有该选项;其他值为该选项的可能前缀,例如 -no-gui
  • 也可以赋值,如 --gui=yes
  • 值按未指定时的尝试顺序排列;autoyes/no 的简写。
  • 单独的 yesno 表示无自动检测的二元选项。

5.3 Configure 元选项

选项说明
-help, -h显示此帮助信息
-verbose, -v配置期间输出详细信息
-continue配置出错时继续
-redo使用之前的选项重新配置。可传递额外选项,但不会被 -redo 记录
-recheck [test,...]清除缓存的失败配置测试结果。安装缺失依赖后使用。指定测试时,仅清除指定测试结果
-recheck-all清除所有缓存的配置测试结果
-feature-<feature>启用 <feature> 功能
-no-feature-<feature>禁用 <feature> 功能
-list-features列出可用功能。部分功能有专用命令行选项
-list-libraries列出可能的外部依赖库

5.4 构建选项

选项说明
-opensource构建 Qt 开源版
-commercial构建 Qt 商业版
-confirm-license自动接受许可协议
-release构建关闭调试的 Qt(默认)
-debug构建开启调试的 Qt
-debug-and-release同时构建带调试和不带调试的 Qt(仅 Apple 和 Windows)
-optimize-debug在调试构建中启用优化(不支持 MSVC 或 Clang)
-optimize-size优化发布构建以减小体积
-optimized-tools即使在调试构建中也构建优化的主机工具
-force-debug-info为发布构建生成符号文件
-separate-debug-info将调试信息分离到独立文件
-gdb-index为 GDB 加速索引调试信息
-strip移除发布二进制文件中不需要的符号
-gc-binaries每个函数或数据项单独分区,启用链接器垃圾回收
-force-asserts即使在发布构建中也启用 Q_ASSERT
-developer-build为 Qt 自身开发编译和链接 Qt(导出自动测试、额外检查等)
-shared构建共享 Qt 库(默认,UIKit 除外)
-static构建静态 Qt 库(UIKit 默认)
-framework构建 Qt 框架包(仅 Apple)
-platform <target>选择主机 mkspec(默认自动检测)
-xplatform <target>交叉编译时选择目标 mkspec
-device <name>为指定设备交叉编译
-device-option <key=value>为设备 mkspec 添加选项
-appstore-compliant禁用不允许在平台应用商店分发的代码(部分平台默认开启)
-qtnamespace <name>将所有 Qt 库代码包裹在 namespace <name> {...}
-qtlibinfix <infix>将所有 libQt5*.so 重命名为 libQt5*.so
-qtlibinfix-plugins-qtlibinfix 重命名 Qt 插件
-testcocoon使用 TestCocoon 代码覆盖工具
-gcov使用 GCov 代码覆盖工具
-trace [backend]启用 tracepoints,支持 ‘etw’(Windows)、‘lttng’(Linux)或 ‘yes’ 自动检测
-sanitizethread
-coverage {trace-pc-guard}添加代码覆盖率插桩(仅 Clang)
-c++std <edition>选择 C++ 标准版本(不支持 MSVC 2015)
-sse2使用 SSE2 指令集
-sse3/-ssse3/-sse4.1/-sse4.2/-avx/-avx2/-avx512启用特定 x86 指令集
-mips_dsp/-mips_dspr2使用 MIPS DSP/rev2 指令集
-qreal <type>将 qreal typedef 为指定类型(影响二进制兼容性)
-R <string>为 Qt 库添加运行时库路径,支持相对 LIBDIR 的路径
-rpath使用库安装路径作为运行时库路径链接 Qt 库和可执行文件
-reduce-exports减少导出符号数量
-reduce-relocations减少重定位数量(仅 Unix)
-plugin-manifests将清单嵌入插件(仅 Windows)
-static-runtime静态链接时使用静态运行库(仅 Windows)
-pch使用预编译头文件
-ltcg启用链接时代码生成
-linker [bfd,gold,lld]强制使用指定的 GNU ld、gold 或 LLVM/LLD 链接器(仅 GCC)
-incredibuild-xge使用 IncrediBuild XGE(仅 Windows)
-ccache使用 ccache 编译器缓存(仅 Unix)
-make-tool <tool>使用指定工具构建 qmake(仅 Windows,默认 nmake)
-mp多处理器并行编译(仅 MSVC)
-warnings-are-errors将警告视为错误(-developer-build 时默认开启)
-silent减少构建输出,便于查看警告和错误

5.5 构建环境

选项说明
-sysroot <dir>设置目标 sysroot 目录
-gcc-sysroot配合 -sysroot,向编译器传递 --sysroot(默认开启)
-pkg-config使用 pkg-config(仅 Unix,默认自动)
-D <string>传递额外的预处理器定义
-I <string>传递额外的头文件包含路径
-L <string>传递额外的库文件路径
-F <string>传递额外的 framework 路径(仅 Apple)
-sdk <sdk>使用指定 Apple SDK 构建 Qt,参数为 xcodebuild -showsdks 列出的 SDK
-android-sdk path设置 Android SDK 根路径
-android-ndk path设置 Android NDK 根路径
-android-ndk-platform设置 Android 平台
-android-ndk-host设置 Android NDK 主机(如 linux-x86, linux-x86_64 等)
-android-abis逗号分隔的 Android abi,默认:armeabi-v7a,arm64-v8a,x86,x86_64
-android-style-assets运行时自动提取样式资源,使 Android 样式正确,但与 LGPL2.1 不兼容

5.6 组件选择

选项说明
-skip <repo>排除整个仓库的构建
-make <part>添加构建部分,指定后会清空默认列表(默认构建 libs、examples,非交叉编译时还包括 tools,-developer-build 时还包括 tests)
-nomake <part>排除指定部分的构建
-compile-examples未设置时仅安装示例源码(WebAssembly 默认否,其他默认是)
-gui构建 Qt GUI 模块及依赖(默认开启)
-widgets构建 Qt Widgets 模块及依赖(默认开启)
-no-dbus不构建 Qt D-Bus 模块(Android 和 Windows 默认)
-dbus-linked构建 Qt D-Bus 并链接 libdbus-1(默认自动)
-dbus-runtime构建 Qt D-Bus 并动态加载 libdbus-1(默认否)
-accessibility启用辅助功能支持(默认开启,建议不要禁用)

Qt 自带部分第三方库的捆绑副本。若自动检测系统库失败,则默认使用这些副本。


5.7 核心选项

选项说明
-doubleconversion选择 double conversion 库(system/qt/no)
-glib启用 Glib 支持(Unix 默认自动)
-eventfd启用 eventfd 支持
-inotify启用 inotify 支持
-iconv启用 iconv(3) 支持(posix/sun/gnu/no,仅 Unix)
-icu启用 ICU 支持
-pcre选择 libpcre2(system/qt/no)
-pps启用 PPS 支持(仅 QNX)
-zlib选择 zlib(system/qt)

5.8 日志后端

选项说明
-journald启用 journald 支持(仅 Unix)
-syslog启用 syslog 支持(仅 Unix)
-slog2启用 slog2 支持(仅 QNX)

5.9 网络选项

选项说明
-ssl启用 SSL 支持(默认自动)
-no-openssl不使用 OpenSSL(Apple 和 WinRT 默认)
-openssl-linked使用 OpenSSL 并链接 libssl
-openssl-runtime使用 OpenSSL 并动态加载 libssl
-schannel使用 Secure Channel(仅 Windows)
-securetransport使用 SecureTransport(仅 Apple)
-sctp启用 SCTP 支持
-libproxy启用 libproxy 支持
-system-proxies默认使用系统网络代理

5.10 图形、打印、控件选项

选项说明
-cups启用 CUPS 支持(仅 Unix)
-fontconfig启用 Fontconfig 支持(仅 Unix)
-freetype选择 FreeType(system/qt/no)
-harfbuzz选择 HarfBuzz-NG(system/qt/no,Apple 和 Windows 不自动检测)
-gtk启用 GTK 平台主题支持
-lgmon启用 lgmon 支持(仅 QNX)
-no-opengl禁用 OpenGL 支持
-opengl <api>启用 OpenGL 支持,支持 es2(Windows 默认)、desktop(Unix 默认)、dynamic(仅 Windows)
-opengles3启用 OpenGL ES 3.x 支持
-egl启用 EGL 支持
-angle使用捆绑的 ANGLE 支持 OpenGL ES 2.0(仅 Windows)
-combined-angle-lib合并 LibEGL 和 LibGLESv2 为 LibANGLE(仅 Windows)
-qpa <name>选择默认 QPA 后端(如 xcb, cocoa, windows),用分号分隔优先级
-xcb-xlib启用 Xcb-Xlib 支持

5.11 平台后端

选项说明
-direct2d启用 Direct2D 支持(仅 Windows)
-directfb启用 DirectFB 支持(仅 Unix)
-eglfs启用 EGLFS 支持(Android 和 Windows 默认否)
-gbm启用 GBM 后端(仅 Linux)
-kms启用 KMS 后端(仅 Linux)
-linuxfb启用 Linux Framebuffer 支持(仅 Linux)
-xcb启用 X11 支持,选择 xcb-* 库(system/qt/no)

5.12 输入后端

选项说明
-libudev启用 udev 支持
-evdev启用 evdev 支持
-imf启用 IMF 支持(仅 QNX)
-libinput启用 libinput 支持
-mtdev启用 mtdev 支持
-tslib启用 tslib 支持
-xcb-xinput启用 XInput2 支持
-xkbcommon启用按键映射支持

5.13 图像格式

选项说明
-gif启用 GIF 读取支持
-ico启用 ICO 支持
-libpng选择 libpng(system/qt/no)
-libjpeg选择 libjpeg(system/qt/no)

5.14 数据库选项

选项说明
-sql-<driver>启用 SQL <driver> 插件,支持 db2 ibase mysql oci odbc psql sqlite2 sqlite tds
-sqlite选择 sqlite3(system/qt)

5.15 Qt3D 选项

选项说明
-assimp选择 assimp 库(system/qt/no)
-qt3d-profile-jobs启用 jobs profiling
-qt3d-profile-gl启用 OpenGL profiling
-qt3d-simd选择 SIMD 支持级别(no/sse2/avx2)
-qt3d-render启用 Qt3D Render 组件
-qt3d-input启用 Qt3D Input 组件
-qt3d-logic启用 Qt3D Logic 组件
-qt3d-extras启用 Qt3D Extras 组件
-qt3d-animation启用 Qt3D Animation 组件

5.16 其他图像格式选项

选项说明
-jasper启用 JasPer 库的 JPEG-2000 支持
-mng启用 MNG 支持
-tiff启用 TIFF 支持(system/qt/no)
-webp启用 WEBP 支持(system/qt/no)

5.17 多媒体选项

选项说明
-pulseaudio启用 PulseAudio 支持(仅 Unix)
-alsa启用 ALSA 支持(仅 Unix)
-no-gstreamer禁用 GStreamer 支持
-gstreamer [version]启用 GStreamer 支持,未指定参数时优先尝试 1.0,再尝试 0.10
-evr在 DirectShow 和 WMF 中启用 EVR

5.18 QtQuick3D 选项

选项说明
-assimp选择 assimp 库(system/qt/no)

5.19 TextToSpeech 选项

选项说明
-flite启用 Flite 支持(仅 Unix)
-flite-alsa启用 Flite 的 ALSA 支持(仅 Unix)
-speechd启用 speech dispatcher 支持(仅 Unix)

5.20 WebEngine 选项

选项说明
-webengine-alsa启用 ALSA 支持(仅 Linux)
-webengine-pulseaudio启用 PulseAudio 支持(仅 Linux)
-webengine-embedded-build启用 Linux 嵌入式构建(仅 Linux)
-webengine-icu使用系统 ICU 库(仅 Linux)
-webengine-ffmpeg使用系统 FFmpeg 库(仅 Linux)
-webengine-opus使用系统 Opus 库(仅 Linux)
-webengine-webp使用系统 WebP 库(仅 Linux)
-webengine-pepper-plugins启用 Pepper Flash 和 Widevine 插件支持
-webengine-printing-and-pdf启用打印和 PDF 输出支持
-webengine-proprietary-codecs启用专有编解码器支持
-webengine-spellchecker启用拼写检查支持
-webengine-native-spellchecker启用原生拼写检查支持(仅 macOS)
-webengine-webrtc启用 WebRTC 支持

6 问题记录

6.1 WARNING: QDoc will not be compiled,

  • 报错信息:

    WARNING: QDoc will not be compiled, probably because libclang could not be located.   This means that you cannot build the Qt documentation.
    
  • 问题原因:找不到libclang路径

  • 解决办法:

    • 使用sudo apt install clang libclang-dev安装libclang;
    • 在运行…/configure构建命令前,使用export LLVM_INSTALL_DIR=/usr/lib/llvm-14命令添加环境变量,可以先使用ls /usr/lib/llvm*命令查看路径下是否有llvm安装目录。

6.2 WARNING: QtWebEngine will not be built.

  • 报错信息:

    Note: The following modules are not being compiled in this configuration:
    webenginecore
    webengine
    webenginewidgetsWARNING: Tool flex is required to build QtWebEngine.WARNING: Python version 2 (2.7.5 or later) is required to build QtWebEngine.WARNING: QtWebEngine will not be built.
    WARNING: QtPdf will not be built.
    
  • 问题原因:缺少flex依赖;

  • 解决办法:使用sudo apt install flex python2安装依赖;

6.3 Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.

  • 报错信息:

    Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.
    
  • 问题原因:缺少libdbus-1-dev或者libatspi2.0-dev

  • 解决办法:使用命令sudo apt install libdbus-1-dev libatspi2.0-dev安装依赖,如果不存在,就使用sudo apt install libatspi命令,按Tab键查看可安装的版本;

6.4 Project ERROR: Building QtQml requires Python.

  • 报错信息:执行make、make install后报错如下

    sh: 1: python: not found
    Project ERROR: Building QtQml requires Python.
    make: *** [Makefile:352: module-qtdeclarative-install_subtargets] Error 3
    
  • 问题原因:编译QtQml找不到python;

  • 解决办法:

    • 使用sudo apt install python或者sudo apt install python2安装;
    • 安装后使用python --version或者python2 --version看是否安装成功;
    • 如果python --version无法显示版本,而python2 --version可以显示版本;
    • 则使用sudo ln /usr/bin/python2 /usr/bin/python创建链接;

6.5 class numeric_limits<QT_PREPEND_NAMESPACE(qfloat16)>

  • 报错信息:执行make时报错如下

    class numeric_limits<QT_PREPEND_NAMESPACE(qfloat16)> : public numeric_limits<float>
    5.14.2/qtbase/include/QtCore/../../src/corelib/global/qfloat16.h:295:7: error: ‘numeric_limits’ is not a class template
    295 | class numeric_limits<QT_PREPEND_NAMESPACE(qfloat16)> : public numeric_limits<float>
    |       ^~~~~~~~~~~~~~
    
  • 解决办法:打开qtbase/src/corelib/global/qglobal.h,添加#include <limits>

    #ifdef __cplusplus
    #  include <type_traits>
    #  include <cstddef>
    #  include <utility>
    #  include <limits>
    #endif
    

6.6 内存不足No space left on device

  • 报错信息:执行make编译到一半报错如下

    cannot write PCH file: No space left on device
    
  • 问题原因:系统内存不足。

6.7 error: ‘runtime_error’ is not a member of ‘std’

  • 报错信息:执行make install时报错如下

    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp: In member function ‘void mbgl::BiDi::mergeParagraphLineBreaks(std::set<long unsigned int>&)’:
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp:63:24: error: ‘runtime_error’ is not a member of ‘std’
    63 |             throw std::runtime_error(std::string("ProcessedBiDiText::mergeParagraphLineBreaks: ") +
    |                        ^~~~~~~~~~~~~
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp: In member function ‘std::vector<std::__cxx11::basic_string<char16_t> > mbgl::BiDi::processText(const u16string&, std::set<long unsigned int>)’:
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp:98:20: error: ‘runtime_error’ is not a member of ‘std’
    98 |         throw std::runtime_error(std::string("BiDi::processText: ") + u_errorName(errorCode));
    |                    ^~~~~~~~~~~~~
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp: In member function ‘std::u16string mbgl::BiDi::getLine(std::size_t, std::size_t)’:
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp:109:20: error: ‘runtime_error’ is not a member of ‘std’
    109 |         throw std::runtime_error(std::string("BiDi::getLine (setLine): ") + u_errorName(errorCode));
    |                    ^~~~~~~~~~~~~
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp:125:20: error: ‘runtime_error’ is not a member of ‘std’
    125 |         throw std::runtime_error(std::string("BiDi::getLine (writeReordered): ") +
    |                    ^~~~~~~~~~~~~
    make[5]: *** [Makefile:3883: .obj/platform/default/bidi. o] Error 1
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/3rdparty/mapbox-gl-native'
    make[4]: *** [Makefile:215: sub-------3rdparty-mapbox-gl-native-install_subtargets] Error 2
    make[4]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/plugins/geoservices'
    make[3]: *** [Makefile:85: sub-geoservices-install_subtargets] Error 2
    make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/plugins'
    make[2]: *** [Makefile:248: sub-plugins-install_subtargets] Error 2
    make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src'
    make[1]: *** [Makefile:61: sub-src-install_subtargets] Error 2
    make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation'
    make: *** [Makefile:828: module-qtlocation-install_subtargets] Error 2
    
  • 问题原因:缺少stdexcept头文件;

  • 解决办法:打开报错的文件,添加#include <stdexcept>

6.8 error: ‘int32_t’ was not declared in this scope

  • 报错信息:执行make install时报错如下

    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/util/convert.cpp:6:56: error: ‘int32_t’ was not declared in this scope6 | template std::array<float, 2> convert(const std::array<int32_t, 2>&);|                                                        ^~~~~~~
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/util/convert.cpp:2:1: note: ‘int32_t’ is defined in header ‘<cstdint>; did you forget to ‘#include <cstdint>’?1 | #include <mbgl/util/convert.hpp>+++ |+#include <cstdint>2 | 
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/util/convert.cpp:6:66: error: template argument 1 is invalid6 | template std::array<float, 2> convert(const std::array<int32_t, 2>&);|                                                                  ^
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/util/convert.cpp:6:31: error: template-id ‘convert<>for ‘std::array<float, 2> mbgl::util::convert(const int&)’ does not match any template declaration6 | template std::array<float, 2> convert(const std::array<int32_t, 2>&);|                               ^~~~~~~
    In file included from /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/util/convert.cpp:1:
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp:12:37: note: candidate is: ‘template<class To, class From, long unsigned int Size, class> constexpr std::array<To, Size> mbgl::util::convert(const std::array<_Tp, _Nm>&)12 | MBGL_CONSTEXPR std::array<To, Size> convert(const std::array<From, Size>&from) {|                                     ^~~~~~~
    make[5]: *** [Makefile:59975: .obj/src/mbgl/util/convert.o] Error 1
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/3rdparty/mapbox-gl-native'
    make[4]: *** [Makefile:215: sub-------3rdparty-mapbox-gl-native-install_subtargets] Error 2
    make[4]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/plugins/geoservices'
    make[3]: *** [Makefile:85: sub-geoservices-install_subtargets] Error 2
    make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src/plugins'
    make[2]: *** [Makefile:248: sub-plugins-install_subtargets] Error 2
    make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation/src'
    make[1]: *** [Makefile:61: sub-src-install_subtargets] Error 2
    make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtlocation'
    make: *** [Makefile:828: module-qtlocation-install_subtargets] Error 2
  • 问题原因:编译器无法识别 int32_t 类型;

  • 解决办法:打开报错文件,包含头文件 int32_t 是 C/C++ 标准库中定义的类型,需要添加头文件:

    #include <cstdint>  // C++ 标准用法
    // 或
    #include <stdint.h> // C 风格头文件(兼容性更好)
    

6.9 Project ERROR: Missing archive files from QtWebEngineCore linking pri

  • 报错信息:执行make编译时报错如下

    Project ERROR: Missing archive files from QtWebEngineCore linking pri
    make[3]: *** [Makefile:132: sub-core_module-pro-install_subtargets] Error 3
    make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core'
    make[2]: *** [Makefile:90: sub-core-install_subtargets] Error 2
    make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src'
    make[1]: *** [Makefile:61: sub-src-install_subtargets] Error 2
    make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine'
    make: *** [Makefile:1100: module-qtwebengine-install_subtargets] Error 2
    
  • 问题原因:不支持静态编译QtWebengine;

  • 解决办法:configure构建时加上-skip qtwebengine

6.10 WARNING: Static builds of QtWebEngine are not supported.

  • 报错信息:执行configure构建后报错如下

    Note: The following modules are not being compiled in this configuration:
    webenginecore
    webengine
    webenginewidgetsWARNING: Static builds of QtWebEngine are not supported.WARNING: QtWebEngine will not be built.WARNING: QtPdf will not be built.Qt is now configured for building.  Just run 'make'.
    Once everything is built, you must run 'make install'.
    Qt will be installed into '/opt/qt5.14.2'.Prior to reconfiguration, make sure you remove any leftovers from
    the previous build.
    
  • 问题原因:不支持静态编译QtWebengine;

  • 解决办法:configure构建时加上-skip qtwebengine

6.11 编译帮助文档报错Error parsing JSON at 1:1: illegal value

  • 报错信息:执行make docs编译时报错如下

    make[5]: Entering directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmlpreview'
    make[5]: Nothing to be done for 'prepare_docs'.
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmlpreview'
    make[5]: Entering directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmllint'
    make[5]: Nothing to be done for 'prepare_docs'.
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmllint'
    make[5]: Entering directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmlcachegen'
    make[5]: Nothing to be done for 'prepare_docs'.
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmlcachegen'
    make[5]: Entering directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmltestrunner'
    make[5]: Nothing to be done for 'prepare_docs'.
    make[5]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qmltestrunner'
    /home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools/qml/qmlimportscanner_wrapper.sh: 6: exec: /home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/bin/qmlimportscanner: not found
    /home/mhf/Code/qt-everywhere-src-5.14.2/qtbase/mkspecs/features/qt.prf:285: Error parsing JSON at 1:1: illegal value
    Project ERROR: Failed to parse qmlimportscanner output.
    make[4]: *** [Makefile:1007: sub-qml-prepare_docs] Error 3
    make[4]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative/tools'
    make[3]: *** [Makefile:643: sub-tools-prepare_docs] Error 2
    make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtdeclarative'
    make[2]: *** [Makefile:2909: module-qtdeclarative-prepare_docs] Error 2
    make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build'
    make[1]: *** [Makefile:2060: html_docs] Error 2
    make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build'
    make: *** [Makefile:2063: docs] Error 2
  • 问题原因:qtdeclarative子工程无法生成qch文档;

  • 解决办法:使用configure构建时加上-skip qtdeclarative,如果报错的是其它子工程,就在-skip后改为对应的子工程就可以。

6.12 ninja: build stopped: subcommand failed.

  • 报错信息:使用make编译QtWebengine时报错如下
ringssl/src/crypto/fipsmodule/bcm.c -o obj/third_party/boringssl/boringssl/bcm.o
ninja: build stopped: subcommand failed.
make[4]: *** [Makefile. gn_run:1263: run_ninja] Error 1
make[4]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core'
make[3]: *** [Makefile:82: sub-gn_run-pro-make_first] Error 2
make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core'
make[2]: *** [Makefile:78: sub-core-make_first] Error 2
make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src'
make[1]: *** [Makefile:49: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine'
make: *** [Makefile:1088: module-qtwebengine-make_first] Error 2
  • 问题原因:由于某种错误导致ninja构建失败;

  • 解决办法:

    • 默认情况下ninja构建失败可能看不到具体的错误信息;

    • 在终端中输入export NINJAJOBS="-j1",然后再执行make就会显示报错信息,例如;

      ../../../../../qtwebengine/src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h:48:55: error: ‘uint32_t’ has not been declared48 |   virtual void PostDelayedTask(std::function<void()>, uint32_t delay_ms) = 0;|             
      
    • 可能是内存不足、硬盘空间(18G)、交换分区不足;

    • 编译时如果内存不足或者交换分区不足则减少编译的线程数,如下所示使用16线程编译,26G内存都略显不足;

      • 解决办法1:将交换分区设置大一点;
      • 解决办法2:将NiNJAJOBS设置小一点,减少编译线程数。

      在这里插入图片描述

      • 也可能是g++版本不支持,使用g+±11编译就会在编译到qtwebengine/src/core时报错,改为g+±9就正常了;

      • 使用sudo apt install g++-9安装;

      • 然后使用sudo ln /usr/bin/g++-9 /usr/bin/g++将g+±9创建别名;

      • 使用g++ -v命令检查版本;

6.13 error: xpath_grammar. hh: No such file or directory

  • 报错信息:使用make编译qtwebengine时报错
/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core/release/gen/third_party/blink/renderer/core/xpath_grammar. cc:124:10: fatal error: xpath_grammar. hh: No such file or directory
124 | #include "xpath_grammar.hh"
|          ^~~~~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
make[4]: *** [Makefile. gn_run:1263: run_ninja] Error 1
make[4]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core'
make[3]: *** [Makefile:82: sub-gn_run-pro-make_first] Error 2
make[3]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core'
make[2]: *** [Makefile:78: sub-core-make_first] Error 2
make[2]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src'
make[1]: *** [Makefile:49: sub-src-make_first] Error 2
make[1]: Leaving directory '/home/mhf/Code/qt-everywhere-src-5.14.2/build/qtwebengine'
make: *** [Makefile:1088: module-qtwebengine-make_first] Error 2
  • 问题原因:似乎是由于bison版本过高导致

    • Qt Webengine 无法使用 Bison 3.7 进行编译 - Qt Bug Tracker
    • 734356 – dev-qt/qtwebengine-5.15.0 与 sys-devel/bison-3.7://…/xpath_grammar.cc:致命错误:xpath_grammar.hh:没有这样的文件或目录
    • qt5-webengine:由于 Bison 3.7 导致构建失败 ·问题 #1096 ·Dylanaraps/社区
  • 解决办法:

    • 使用sudo apt remove bison卸载bison;

    • 编译安装bison3.1;

      wget http://ftp.gnu.org/gnu/bison/bison-3.1.tar.gz
      tar -xzvf bison-3.1.tar.gz
      cd bison-3.1
      ./configure
      make
      sudo make install
      
    • 进入/Code/qt-everywhere-src-5.14.2/build/qtwebengine/src/core/release/gen/third_party/blink/renderer/core路径;

    • 使用gedit xpath_grammar.cc打开源文件;

    • #include "xpath_grammar.hh改为#include "xpath_grammar.h

    • 然后再次执行make编译。

6.14 缺少ninja报错

  • 报错信息:使用make编译qtcreator报错
#warning ClangFormat: building against unmodified Clang, see README. md for more info
^
1 warning generated.
make[1]: *** [CMakeFiles/Makefile2:9240: src/plugins/clangformat/CMakeFiles/ClangFormat. dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 77%] Linking CXX shared library ../../../lib/qtcreator/plugins/libQbsProjectManager.so
[ 77%] Built target Debugger
[ 77%] Linking CXX shared library ../../../lib/qtcreator/plugins/libQmlJSEditor.so
[ 77%] Built target QbsProjectManager
[ 77%] Built target QmlJSEditor
make: *** [Makefile:136: all] Error 2
  • 解决办法:使用sudo apt install ninja-build安装ninja;

6.15 style.SortIncludes = false;

  • 报错信息:使用make编译qtcreator报错
/home/mhf/Code/qt-creator-opensource-src-4.15.2/src/plugins/clangformat/clangformatbaseindenter.cpp:45:26: error: assigning to 'clang::format::FormatStyle::SortIncludesOptions' from incompatible type 'bool'style.SortIncludes = false;^~~~~
1 error generated.
make[2]: *** [src/plugins/clangformat/CMakeFiles/ClangFormat.dir/build.make:94: src/plugins/clangformat/CMakeFiles/ClangFormat.dir/clangformatbaseindenter.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:9240: src/plugins/clangformat/CMakeFiles/ClangFormat.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
  • 问题原因:由于clang版本不同,其中存在不兼容;

  • 解决办法:

    • qtcreator源码中README.md版本要求安装clang;
    • 或者打开报错的文件,将false改为对应的枚举。
    // style.SortIncludes = false;
    style.SortIncludes = clang::format::FormatStyle::SI_Never;//style.SortIncludes = true;
    style.SortIncludes = clang::format::FormatStyle::SI_CaseSensitive;
    // style.SpacesInAngles = false;
    style.SpacesInAngles = clang::format::FormatStyle::SIAS_Never;
    

6.16 ubuntu22.04编译qtwebengine后无法打开html

  • 报错信息:在ubuntu22.04上编译的qtwebengine可以正常编译,但是运行后无法打开html

    Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
    QSocketNotifier: Can only be used with threads started with QThread
    

6.17 undefined reference to pthread_create

  • 报错信息:使用clang-10编译qtcreator4.15.2时报错

    Determining if the pthread_create exist failed with the following output:
    Change Dir: /home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmpRun Build Command:"/usr/bin/make" "cmTC_c9727/fast"
    /usr/bin/make -f CMakeFiles/cmTC_c9727.dir/build. make CMakeFiles/cmTC_c9727.dir/build
    make[1]: Entering directory '/home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_c9727.dir/CheckSymbolExists.c.o
    /usr/bin/cc    -o CMakeFiles/cmTC_c9727.dir/CheckSymbolExists.c. o   -c /home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
    Linking C executable cmTC_c9727
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c9727.dir/link.txt --verbose=1
    /usr/bin/cc      CMakeFiles/cmTC_c9727.dir/CheckSymbolExists.c. o  -o cmTC_c9727
    CMakeFiles/cmTC_c9727.dir/CheckSymbolExists.c. o: In function `main':
    CheckSymbolExists.c:(.text+0x1b): undefined reference to `pthread_create'
    collect2: error: ld returned 1 exit status
    CMakeFiles/cmTC_c9727.dir/build. make:97: recipe for target 'cmTC_c9727' failed
    make[1]: *** [cmTC_c9727] Error 1
    make[1]: Leaving directory '/home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp'
    Makefile:126: recipe for target 'cmTC_c9727/fast' failed
    make: *** [cmTC_c9727/fast] Error 2File /home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
    /* */
    #include <pthread.h>int main(int argc, char** argv)
    {
    (void)argv;
    #ifndef pthread_create
    return ((int*)(&pthread_create))[argc];
    #else
    (void)argc;
    return 0;
    #endif
    }Determining if the function pthread_create exists in the pthreads failed with the following output:
    Change Dir: /home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmpRun Build Command:"/usr/bin/make" "cmTC_f3a0e/fast"
    /usr/bin/make -f CMakeFiles/cmTC_f3a0e.dir/build. make CMakeFiles/cmTC_f3a0e.dir/build
    make[1]: Entering directory '/home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_f3a0e.dir/CheckFunctionExists.c.o
    /usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_f3a0e.dir/CheckFunctionExists.c. o   -c /usr/share/cmake-3.10/Modules/CheckFunctionExists.c
    Linking C executable cmTC_f3a0e
    /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f3a0e.dir/link.txt --verbose=1
    /usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTC_f3a0e.dir/CheckFunctionExists.c. o  -o cmTC_f3a0e -lpthreads
    /usr/bin/ld: cannot find -lpthreads
    collect2: error: ld returned 1 exit status
    CMakeFiles/cmTC_f3a0e.dir/build. make:97: recipe for target 'cmTC_f3a0e' failed
    make[1]: *** [cmTC_f3a0e] Error 1
    make[1]: Leaving directory '/home/mhf/Code/qt-creator-opensource-src-4.15.2/build/CMakeFiles/CMakeTmp'
    Makefile:126: recipe for target 'cmTC_f3a0e/fast' failed
    make: *** [cmTC_f3a0e/fast] Error 2
    
  • 错误原因:clang10不兼容;

  • 解决办法:下载clang11编译。



相关文章:

ubuntu18.04编译qt5.14.2源码

ubuntu18.04编译qt5.14.2源码 文章目录 ubuntu18.04编译qt5.14.2源码[toc]1 前言2 参考文档3 下载源码3.1 方法13.2 方法23.3 方法3 4 ubuntu编译qt源码4.1 环境准备4.2 设置交换分区大小4.3 编译源码4.4 添加环境变量4.5 验证编译结果4.6 编译帮助文档&#xff08;qch&#xf…...

leetcodehot100刷题——排序算法总结

排序算法总结 冒泡排序介绍步骤&#xff08;以升序排序为例&#xff09;算法实现复杂度分析时间复杂度空间复杂度 是否为稳定排序&#xff1a;是稳定排序的定义 选择排序介绍步骤&#xff08;以升序排序为例&#xff09;算法实现复杂度分析时间复杂度空间复杂度 是否为稳定排序…...

多用途商务,电子产品发布,科技架构,智能手表交互等发布PPT模版20套一组分享

产品发布类PPT模版20套一组&#xff1a;产品发布PPT模版https://pan.quark.cn/s/25c8517b0be3 第一套PPT模版是一个总结用的PPT封面&#xff0c;背景浅灰色&#xff0c;有绿色叶片和花朵装饰&#xff0c;深绿色标题&#xff0c;多个适用场景和占位符。突出其清新自然的设计和商…...

2025年- H29-Lc137- 19.删除链表的倒数第N个节点(快慢指针)---java版

1.题目描述 2.思路 快慢指针都在虚拟头节点&#xff0c;然后让快指针先走n1步&#xff0c;接下来&#xff0c;快慢指针以前移动&#xff0c;直到快指针指向null&#xff0c;慢指针指向被删节点的前一个节点。 3.代码实现 方法一&#xff1a;不带测试用例 /*** Definition …...

新电脑软件配置二:安装python,git, pycharm

安装python 地址 https://www.python.org/downloads/ 不是很懂为什么这么多版本 安装windows64位的 这里我是凭自己感觉装的了 然后cmd输入命令没有生效&#xff0c;先重启下&#xff1f; 重启之后再次验证 环境是成功的 之前是输入的python -version 命令输入错误 安装pyc…...

医学影像开发的开源生态与技术实践:从DCMTK到DICOMweb的全面探索

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

【HarmonyOS 5开发入门】DevEco Studio安装配置完全指南

⭐本期内容&#xff1a;【HarmonyOS4&#xff0b;NEXT】Button组件核心特性 &#x1f3c6;系列专栏&#xff1a;鸿蒙HarmonyOS&#xff1a;探索未来智能生态新纪元 文章目录 前言下载开发工具安装开发工具配置开发环境新建项目项目结构概述运行项目Preview预览模拟器运行 报错处…...

出现 Uncaught ReferenceError: process is not defined 错误

在浏览器环境中&#xff0c;process 对象是 Node.js 环境特有的&#xff0c;因此当你在浏览器中运行代码时&#xff0c;会出现 Uncaught ReferenceError: process is not defined 错误。这个错误是因为代码里使用了 process.env.BASE_URL&#xff0c;而浏览器环境下并没有 proc…...

如何实现RTSP和RTMP低至100-200ms的延迟:直播SDK的技术突破

在实时音视频传输中&#xff0c;低延迟是直播应用的核心技术要求之一。无论是在线教育、远程医疗&#xff0c;还是实时互动直播&#xff0c;延迟过大会影响用户体验&#xff0c;甚至导致应用无法正常使用。大牛直播SDK&#xff08;SmartMediaKit&#xff09;在RTSP和RTMP播放器…...

linux-----------------库制作与原理(下)

1.ELF文件 要理解编译链链接的细节&#xff0c;我们不得不了解⼀下ELF⽂件。其实有以下四种⽂件其实都是ELF⽂件&#xff1a; • 可重定位⽂件&#xff08;Relocatable File &#xff09; &#xff1a;即 xxx.o ⽂件。包含适合于与其他⽬标⽂件链接来创 建可执⾏⽂件或者共享…...

一种开源的高斯泼溅实现库——gsplat: An Open-Source Library for Gaussian Splatting

一种开源的高斯泼溅实现库——gsplat: An Open-Source Library for Gaussian Splatting 文章目录 一种开源的高斯泼溅实现库——gsplat: An Open-Source Library for Gaussian Splatting摘要Abstract1. 基本思想1.1 设计1.2 特点 2. Nerfstudio&Splatfacto2.1 Nerfstudio2.…...

Embedding 模型详解:架构、训练与 LLM 的区别

1. 什么是 Embedding 模型&#xff1f; Embedding 模型的核心使命是将离散的、高维的文本数据&#xff08;例如单个词语、短语、句子、段落乃至整篇文档&#xff09;转化为稠密的 (dense)、低维的 (low-dimensional)、连续的 (continuous) 向量表示。这些向量被称作“嵌入 (Em…...

网络的知识的一些概念

1.什么是局域网&#xff0c;什么是广域网 局域网&#xff08;Local area network&#xff09;也可以称为本地网&#xff0c;内网&#xff0c;局域网有这几个发展经历&#xff1a; 最开始电脑与电之间是直接用网线连接的 再后来有了集线器&#xff08;&#xff09; 再后来出…...

NAT(网络地址转换)逻辑图解+实验详解

原理 NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09; 是一种网络技术&#xff0c;用于在IP数据包通过路由器或防火墙时&#xff0c;修改其源IP地址或目标IP地址&#xff0c;以实现不同网络之间的通信。 基础概念 本来NAT是来解决 IPv4 地…...

深入解析Spring Boot与Kafka集成:构建高性能消息驱动应用

深入解析Spring Boot与Kafka集成&#xff1a;构建高性能消息驱动应用 引言 在现代分布式系统中&#xff0c;消息队列是实现异步通信和解耦的重要组件。Apache Kafka作为一种高性能、分布式的消息系统&#xff0c;被广泛应用于大数据和实时数据处理场景。本文将详细介绍如何在…...

Linux的内存泄漏问题及排查方法

内存泄漏是指在计算机程序中&#xff0c;已不再被使用的内存未被正确释放&#xff0c;导致内存占用随时间累积&#xff0c;进而引发系统内存不足、性能下降甚至崩溃的问题。在Linux系统中&#xff0c;开发者和运维人员可通过以下方法排查和解决内存泄漏问题&#xff1a; 1. 使…...

Java基础知识总结(超详细整理)

一&#xff1a;概述 1.1Java类及类的成员 属性、方法、构造器、代码块、内部类 &#xff08;1&#xff09;数组 java虚拟机内存划分 各区域作用 内存解析 基本使用 两个变量指向一个一维数组 没有new就不会在堆里新开辟空间 &#xff08;2&#xff09;对象数组 &#xff08;3&a…...

Qt Widgets模块功能详细说明,基本控件:QPushButton(二)

一、基本控件&#xff08;Widgets&#xff09; Qt 提供了丰富的基本控件&#xff0c;如按钮、标签、文本框、复选框、单选按钮、列表框、组合框、菜单、工具栏等。 1、QPushButton 1.1、概述 (用途、继承关系) QPushButton 是 Qt 框架中用于创建按钮的控件&#xff0c;它的主…...

【MySQL成神之路】MySQL常见命令汇总

目录 MySQL常用命令总结 1. 数据库操作 2. 表操作 3. 数据操作&#xff08;DML&#xff09; 4. 索引与优化 5. 用户与权限管理 6. 备份与恢复 7. 事务控制 8. 常用函数 9. 系统状态与日志 总结 MySQL常用命令总结 MySQL作为最流行的关系型数据库之一&#xff0c;提供…...

UnLua源码分析(一)初始化流程

UnLua源码分析&#xff08;一&#xff09;初始化流程 接入插件启动注册设置默认参数集注册回调SetActivePostLoadMapWithWorldULuaEnvLocator启动Lua虚拟机初始化UE相关的Lua Lib创建与Lua交互的数据结构注册静态导出的类&#xff0c;函数&#xff0c;枚举Lua层初始化 UUnLuaMa…...

非线性1 修改

第一章为读者介绍了非线性动力学与混沌理论的基本概念、发展历史以及应用领域。 1.1 动力学简史&#xff1a; 从牛顿力学开始&#xff0c;介绍动力学作为物理学分支的发展历程。重点介绍了庞加莱对混沌现象的早期探索&#xff0c;以及20世纪60年代洛伦兹方程的发现&#xff0…...

系统性能不达标,如何提升用户体验?

当系统性能不达标时&#xff0c;要想有效提升用户体验&#xff0c;必须从性能优化、前后端协同、用户感知改善、监控预警机制四个关键维度切入。其中&#xff0c;性能优化是最直接有效的策略&#xff0c;它通过代码优化、资源压缩、缓存机制、CDN加速等手段&#xff0c;显著提升…...

【Linux】进程的基本概念

目录 概念描述进程-PCB如何查看进程通过系统目录进行查看通过ps指令进行查看 通过系统调用获取进程的PID和PPID(进程标⽰符)通过系统调用创建子进程通过一段代码来介绍fork为什么要有子进程&#xff1f;fork为什么给子进程返回0&#xff0c;给父进程返回子进程的PIDfork函数到底…...

mongodb管理工具的使用

环境&#xff1a; 远程服务器的操作系统&#xff1a;centOS stream 9; mongoDB version:8.0; 本地电脑 navicat premium 17.2 ; 宝塔上安装了mongoDB 目的&#xff1a;通过本地的navicat链接mongoDB,如何打通链接&#xff0c;分2步&#xff1a; 第一步&#xff1a;宝塔-&…...

面试中的线程题

原文链接&#xff1a;线程题大全 Java 并发库同步辅助类 CountDownLatch 工作机制&#xff1a;初始化一个计数器&#xff0c;此计数器的值表示需要等待的事件数量。 提供了两个主要方法&#xff1a; await()&#xff1a;当一个线程调用此方法时&#xff0c;它将阻塞&#…...

计算机系统的层次结构

计算机系统的层次结构 一, 计算机系统的层次结构的定义 计算机的一个赢软件组成的综合体. 因为面对的应用范围越来越广, 所以必须有复杂的系统软件和硬件的支持. 软/硬件的设计者和使用者从不同的角度, 不同的语言来对待同一个计算机系统, 因此他们看到的计算机系统的属性对计…...

[特殊字符] SSL/TLS 中的密钥协商流程笔记

✅ 背景说明&#xff1a; SSL/TLS 为了确保通信保密性&#xff0c;结合使用了&#xff1a; 非对称加密&#xff08;用于密钥交换&#xff09; 对称加密&#xff08;用于数据加密&#xff09; &#x1f501; 客户端主导密钥协商的完整流程如下&#xff1a; 1️⃣ 客户端发起…...

多模态大语言模型arxiv论文略读(八十一)

What is the Visual Cognition Gap between Humans and Multimodal LLMs? ➡️ 论文标题&#xff1a;What is the Visual Cognition Gap between Humans and Multimodal LLMs? ➡️ 论文作者&#xff1a;Xu Cao, Bolin Lai, Wenqian Ye, Yunsheng Ma, Joerg Heintz, Jintai …...

SpringBoot(一)--- Maven基础

目录 前言 一、初始Maven 1.依赖管理 2.项目构建 3.统一项目结构 二、IDEA集成Maven 1.Maven安装 2.创建Maven项目 2.1全局设置 2.2 创建SpringBoot项目 2.3 常见问题 三、单元测试 1.JUnit入门 2.断言 前言 Maven 是一款用于管理和构建Java项目的工具&#xff…...

如何使用WordPress创建美食博客

不管你是否意识到&#xff0c;食物是我们生活的核心。有些人将其用作燃料&#xff0c;而另一些人则将食谱作为一种艺术形式呈现。如果您属于后者&#xff0c;并且想创建一个美食博客来分享您的热情&#xff0c;那么WordPress是一个顶级平台。 几乎每个话题都有一个博客利基&am…...

SAP集团内部公司间交易自动开票

SAP集团内部公司间交易自动开票(非STO/EDI模式) 集团内部公司间采购与销售业务&#xff0c;在确认相应单据无误后&#xff0c;为减少人工开票业务&#xff0c; 可以用系统标准功能来实现自动开票。 1.采购发票自动开票(ERS) T-CODE:BP,勾选“基于收货的发票校验”、“自动G…...

代码审计-php框架开发,实战tp项目,打击微交易,源码获取,扩大战果

实战&#xff0c;不安全写法引发的注入 这个bc靶场源码没有&#xff0c;看老师演示 打开很明显的tp框架源码 拿到tp框架之后第一步&#xff0c;搜索版本信息5.0.5 两个思路 1.代码的不安全写法 2.版本自身存在的漏洞 全局搜索where看看也没有不安全的 哎&#xff1f;&…...

Atcoder Beginner Contest 406

比赛链接&#xff1a;ABC406 A - Not Acceptable 将小时转换成分钟直接进行判断。 时间复杂度&#xff1a; O ( 1 ) O(1) O(1)。 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);int a,…...

02 K8s双主安装

00 前提准备 # 设置好主机名并添加hosts解析主机名IP地址身份master01172.2.25.50主Mastermaster02172.2.25.51备Masternode01172.2.25.52节点1node02172.2.25.53节点2node03172.2.25.54节点3 01 使用脚本安装Docker # Docker脚本文件 https://node-siyuan.oss-cn-beijing.a…...

分别用 语言模型雏形N-Gram 和 文本表示BoW词袋 来实现文本情绪分类

语言模型的雏形 N-Gram 和简单文本表示 Bag-of-Words 语言表示模型简介 (1) Bag-of-Words (BoW) 是什么&#xff1f; *定义&#xff1a;将文本表示为词频向量&#xff0c;忽略词序和语法&#xff0c;仅记录每个词的出现次数。 **示例&#xff1a; 句子1&#xff1a;I love …...

2_Spring【IOC容器中获取组件Bean】

Spring中IOC容器中获取组件Bean 实体类 //接口 public interface TestDemo {public void doSomething(); } // 实现类 public class HappyComponent implements TestDemo {public void doSomething() {System.out.println("HappyComponent is doing something...")…...

一次页面假死分析

现象&#xff1a;系统的几个功能若干次切换&#xff0c;页面假死&#xff0c;无反应 上图&#xff0c;不是每次切换都假死&#xff0c;但非常容易重现&#xff0c;每次页面假死都在getValidatorJSONInfo这个调用后 getValidatorJSONInfo调用已返回&#xff0c;但返回内容页面挂…...

WPS多级标题编号以及样式控制

WPS多级标题编号以及样式控制 上一篇&#xff1a;WPS自动生成图表目录以及样式控制 阅读提示&#xff1a;请先阅读完本篇内容再操作&#xff0c;避免出现其他错误。 初始样式&#xff1a; 1.1 步骤演示 说明&#xff1a;以3级目录为例 标题1样式&#xff1a;黑体&#xff0c;…...

方差是什么?

一、方差是什么? 方差(Variance)是概率论和统计学中衡量数据离散程度(即数据与平均值的偏离程度)的核心指标。 通俗理解:方差越大,数据越“分散”“波动大”;方差越小,数据越“集中”“稳定”。 二、方差的公式(以样本数据为例) 计算步骤: 第一步:求平均值 ( …...

Java核心API实战:从字符串到多线程全解析

Java常用API详解与代码实践 一、字符串处理类 1. String类 // 字符串基础操作 String str "Hello,Java!"; System.out.println(str.substring(7)); // 输出"Java!" System.out.println(str.indexOf("Java")); // 输出7// 正则表达式匹配 Str…...

低代码AI开发新趋势:Dify平台化开发实战

在人工智能快速发展的今天&#xff0c;AI应用的开发方式也在不断演变。从传统的手写代码到如今的低代码甚至零代码开发&#xff0c;技术的进步让更多的非专业开发者也能轻松上手。本文将带你走进Dify平台化开发的世界&#xff0c;探索如何通过这一强大的低代码AI开发平台&#…...

基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程

前言&#xff1a;多模态虚拟主播的技术革命 在AI内容生成领域&#xff0c;虚拟主播技术正经历从2D到3D、从固定模板到个性化定制的跨越式发展。本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播系统&#xff0c;涵盖从人脸建模到多模态融合的全流程…...

中科院自动化研究所通用空中任务无人机!基于大模型的通用任务执行与自主飞行

作者&#xff1a; Ji Zhao and Xiao Lin 单位&#xff1a;中科院自动化研究所 论文标题&#xff1a;General-Purpose Aerial Intelligent Agents Empowered by Large Language Models 论文链接&#xff1a;https://arxiv.org/pdf/2503.08302 主要贡献 硬件-软件协同设计框…...

DOM知识点

DOM&#xff08;Document Object Model&#xff09;即文档对象模型&#xff0c;是用于表示和操作HTML、XML文档的编程接口。以下是关于DOM的一些知识点总结&#xff1a; 基本概念 • DOM将文档解析为一个由节点&#xff08;Node&#xff09;组成的树形结构&#xff0c;每个节…...

设备预测性维护的停机时间革命:中讯烛龙如何用AI重构工业设备管理范式

在工业4.0的智能化浪潮中&#xff0c;非计划停机每年吞噬企业3%-8%的产值。中讯烛龙预测性维护系统通过多模态感知矩阵分布式智能体的创新架构&#xff0c;实现设备健康管理的范式跃迁&#xff0c;帮助制造企业将停机时间压缩70%以上。本文将深度解析技术实现路径与行业级实践方…...

JMeter 教程:使用 HTTP 请求的参数列表发送 POST 请求(form 表单格式)

目录 ✅ 教程目的 &#x1f6e0;️ 准备工作 &#x1f4c4; 操作步骤 第一步&#xff1a;新建测试计划 第二步&#xff1a;添加 HTTP 请求 第三步&#xff1a;添加参数列表&#xff08;表单参数&#xff09; 第四步&#xff1a;添加结果查看器 第五步&#xff1a;运行测…...

**HTTP/HTTPS基础** - URL结构(协议、域名、端口、路径、参数、锚点) - 请求方法(GET、POST) - 请求头/响应头 - 状态码含义

# HTTP/HTTPS基础知识点详解 ## 1. URL结构 ### 协议部分 - http:// - 超文本传输协议&#xff0c;明文传输 - https:// - 安全的超文本传输协议&#xff0c;使用SSL/TLS加密 - 爬虫注意点&#xff1a;HTTPS网站有TLS指纹(JA3指纹)&#xff0c;可被用于检测爬虫 ### 域名部分…...

2025抓包工具Reqable手机抓包HTTPS亲测简单好用-快速跑通

前言 自安卓7.0高版本系统不在信任用户证书&#xff0c;https抓包方式市面查找方法太过复杂手机要root等&#xff0c;前置条件要求太高太复杂&#xff0c;看的头痛&#xff0c;今天一台电脑按步骤操作完即可抓包https,给大家搞定抓包https问题。支持直接编辑修改请求参…...

大模型在胫骨平台骨折预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法和创新点 二、大模型预测胫骨平台骨折的原理和方法 2.1 相关大模型介绍 2.2 数据收集与预处理 2.3 模型训练与优化 2.4 模型评估指标 三、术前预测与手术方案制定 3.1 骨折类型和严重程度预测 3.…...

AI图像处理之ComfyUI节点(二)

一、Load Checkpoint节点 功能&#xff1a;用于加载预训练的大模型&#xff0c;如Stable Diffusion等 参数&#xff1a; chechkpoint&#xff1a;选择加载的模型文件&#xff08;.ckpt或.satetensors格式&#xff09; MODEL&#xff1a;输出用于图像扩散预测的UNet模型 CLIP&…...