Windows10+Qt6.9.0+OpenSSL3.2.4静态编译

2025-06-23 22:41:23 3

编译OpenSSL

https://github.com/openssl/openssl/releases/download/openssl-3.2.4/openssl-3.2.4.tar.gz

环境

1. perl 5.40.2

2. nasm 2.16.01

3. vs2022


打开vs2022带的x64命令行工具


debug-dynamic

perl Configure VC-WIN64A --debug --prefix=D:/openssl-3.2.4-debug-dynamic-64 --openssldir=D:/openssl-3.2.4-debug-dynamic-64/common

release-static

perl Configure VC-WIN64A -static no-shared no-module  --release  --prefix=D:/openssl-3.2.4-release-static-64 --openssldir=D:/openssl-3.2.4-release-static-64/common



nmake
nmake test
nmake install


编译Qt6


环境

1. cmake 3.29.2

2. python3

3. perl 5.40.2


debug-dynamic

编译完, openssl的动态库libcrypto-3-x64.dll libssl-3-x64.dll要复制到qt的bin目录

# 设置编码 不然后面的脚本会报错
chcp 65001
mkdir qt-build && cd qt-build
# 设置openssl的路径
set PATH=D:/openssl-3.2.4-debug-dynamic-64/bin;%PATH%
# debug+dynamic+openssl
..\configure -prefix qt-build -debug -shared -opensource -openssl-linked -- -D OPENSSL_ROOT_DIR=D:/openssl-3.2.4-debug-dynamic-64
# 并行构建
cmake --build . --parallel
cmake --install .


release-static

注意不要被strawberry污染了环境变量

修改源码\qtbase\mkspecs\common\msvc-desktop.conf中41-43行 将MD改为MT


chcp 65001
set PATH=D:/openssl-3.2.4-release-static-64/lib;%PATH%
set PATH=D:/openssl-3.2.4-release-static-64/include;%PATH%
set PATH=D:/openssl-3.2.4-release-static-64;%PATH%
set OPENSSL_USE_STATIC_LIBS=TRUE
set OPENSSL_MSVC_STATIC_RT=TRUE
set CMAKE_USE_OPENSSL=TRUE
set OPENSSL_ROOT_DIR=D:/openssl-3.2.4-release-static-64
mkdir qt-build && cd qt-build
..\configure -prefix qt-build -release -static -static-runtime -opensource -ssl -openssl -openssl-linked  -platform win32-msvc  -nomake examples -nomake tests  -DOPENSSL_USE_STATIC_LIBS=TRUE -DOPENSSL_ROOT_DIR="D:/openssl-3.2.4-release-static-64"  -DOPENSSL_MSVC_STATIC_RT=ON -DCMAKE_USE_OPENSSL=ON -DCMAKE_INCLUDE_PATH="D:/openssl-3.2.4-release-static-64/include" -DCMAKE_LIBRARY_PATH="D:/openssl-3.2.4-release-static-64/lib" -DCMAKE_PREFIX_PATH=qt-build 
cmake --build . --parallel
cmake --install .


相对qt5, qt6需要额外的设置

1. 将openssl的libssl.lib/libcrypto.lib复制到qt的lib目录

2. vs里右键工程 Properties -> Linker -> All Options 右边列表找到 Additional Library Directories (附加库目录) 添加一项 $(QtInstallDir)/lib


demo

#include "QtWidgetsApplication5.h"
#include <QtWidgets/QApplication>
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QDebug>
#include <QSslConfiguration>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QtWidgetsApplication5 window;
    window.show();



    if (QSslSocket::supportsSsl()) {
        QMessageBox::information(nullptr, "tips", QSslSocket::sslLibraryVersionString());
        QMessageBox::information(nullptr, "tips", QSslSocket::sslLibraryBuildVersionString());
    }

    QNetworkAccessManager manager;

    QUrl url("https://blog.22xcode.com/404");
    QNetworkRequest request(url);

    QNetworkReply* reply = manager.get(request);

    QObject::connect(reply, &QNetworkReply::finished, [&]() {
        QMessageBox::information(nullptr, "tips", reply->readAll());
        reply->deleteLater();
    });

    return app.exec();
}

静态编译出来后, 一个exe有30.4 MB

单文件复制到其它机器运行正常


Windows10+Qt6.9.0+OpenSSL3.2.4静态编译

Windows10+Qt6.9.0+OpenSSL3.2.4静态编译

编译OpenSSLhttps://github.com/openssl/openssl/releases/download/openssl-3.2.4/openssl-3.2.4.tar.gz环境1. perl 5.40.22. nasm 2.16.013. vs2022打开vs2022带的x64命
2025-06-23

Visual Studio QT插件 添加报错no value for qt_install_prefix/src

挪动了qt的目录后, 插件添加不了invalid qt versions qmake error: no value for qt_install_prefix/src解决方法qmake同级别路径新建qt.conf文件内容[Paths] Prefix = ..
2024-01-25

Visual Studio 2019编译 OpenSSL x86/64 static/dynamic

最近有需要, 需要openssl支持1. 下载源码我下的是openssl-1.0.1o, https://www.openssl.org/source/old/2. 安装Perlhttps://strawberryperl.com/download/5.26.3.1/strawberry-perl-
2024-01-23

CMake 链接 OpenSSL 静态库

示例CMakeLists.txt如下cmake_minimum_required(VERSION 3.5) project(test CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unu
2022-08-23

Visual Studio 2019编译QT5.12.0 x64

下载源码https://download.qt.io/archive/qt/5.12/5.12.0/single/编译工具Perlhttps://strawberryperl.com/download/5.26.3.1/strawberry-perl-5.26.3.1-64bit-portable.
2021-07-14

freemarker 时间显示不正常 设置时区

项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明time_zone:时区的名称来显示并格式化时间。 默认情况下,使用JVM的时区。 也可以是 Java 时区 API 接受的值,或者 "JVM default" (从 FreeMarker 2
2020-03-28
IDEA 2019.1 xml 不高亮

IDEA 2019.1 xml 不高亮

前几天更新了idea后,发现xml里的代码都没有了高亮,变得跟记事本一个德性了打开setting ,搜索 File Types,找到xml项, 查看下方的匹配格式,果然没有xml,(idea真是厉害)点击右方的+,输入*.xml,点击ok,解决问题
2020-03-28

npm install 淘宝镜像

npm install --registry=https://registry.npm.taobao.org
2020-03-28
Java中方法的参数传递机制

Java中方法的参数传递机制

来看一段代码 public class Man { private String name; private Integer age; public String getName() { return name; } publi
2020-03-28
基于自定义注解手写权限控制

基于自定义注解手写权限控制

方法一: AOP 方法二: 拦截器项目结构项目依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w
2020-03-28

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

SpringBoot 启动普通java工程

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
2020-03-28

Vue.js DOM操作

<template> <input type="button" @click="reply($event)" value="回复"> </template> export default { methods: { replyFun(e) {
2020-03-29
CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23
编写自己的Spring Boot Starter

编写自己的Spring Boot Starter

1.新建一个maven项目命名规则统一是xxx-spring-boot-starter完整pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2020-06-29