Gmssl windows下编译

第一步:确认终端环境

打开开始菜单 → MSYS2 UCRT64,执行:

复制代码
echo $MSYSTEM
which gcc

输出必须:

复制代码
UCRT64
/ucrt64/bin/gcc

第二步:安装 UCRT64 配套全套工具(UCRT64 终端内执行)

复制代码
pacman -Syu

如果提示关闭终端,关掉,重新打开 UCRT64 继续。

复制代码
pacman -S mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-make git

验证工具:

复制代码
gcc --version
mingw32-make --version
cmake --version

全部正常输出版本号。

第三步:编译 GmSSL‑3(UCRT64 完整命令)

复制代码
git clone https://github.com/guanzhi/GmSSL.git
cd GmSSL
git checkout tags/v3.2.0

mkdir build_ucrt64
cd build_ucrt64

若提醒连接不到github,可手动下载工程。

CMakeLists.txt中,找到第229行 附近的add_executable(gmssl-bin ${tools}),用条件判断包起来:

复制代码
# 替换第229-232行
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
    add_executable(gmssl-bin ${tools})
    target_link_libraries(gmssl-bin LINK_PUBLIC gmssl)
    set_target_properties(gmssl-bin PROPERTIES RUNTIME_OUTPUT_NAME gmssl)
    if (WIN32)
        target_link_libraries(gmssl-bin PRIVATE Ws2_32)
    endif()
    # ... 后面的测试相关代码也包在这个if块里 ...
endif()

改成:

复制代码
# 新增一个option,默认ON表示构建命令行工具
option(BUILD_GMSSL_BIN "Build gmssl command-line tool" ON)

if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS" AND BUILD_GMSSL_BIN)
    add_executable(gmssl-bin ${tools})
    target_link_libraries(gmssl-bin LINK_PUBLIC gmssl)
    set_target_properties(gmssl-bin PROPERTIES RUNTIME_OUTPUT_NAME gmssl)
    if (WIN32)
        target_link_libraries(gmssl-bin PRIVATE Ws2_32)
    endif()
    # ... 后面的测试代码也包在这个if块里 ...
endif()

编译命令为:

复制代码
cmake .. -G "Unix Makefiles" \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_COMMAND_LINE=OFF \
-DENABLE_TEST=OFF \
-DENABLE_DLOPEN=OFF \
-DBUILD_GMSSL_BIN=OFF

编译:

复制代码
make -j4

然后可以正常编译输出静态链接库文件。

相关推荐
江湖人称菠萝包2 小时前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter11-PE文件格式深入剖析
windows·笔记
普通人62 小时前
win系统docker运行
windows·docker
软件课代表CiCi13 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
梅孔立14 小时前
OpenCode + Windows PowerShell 完整安装使用教程
windows
2601_9623649714 小时前
面向设备厂商:Windows Hello 认证摄像头核心要点
windows·安全·电脑
星间都市山脉1 天前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
小羊没烦恼!1 天前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
公子小六1 天前
基于.NET的Windows窗体编程之WinForms自定义控件(1)
windows·.net
江湖人称菠萝包2 天前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter4-进程
windows·笔记
www.022 天前
Codex额度用完怎么办?Windows定时自动继续VS Code Codex任务实战
人工智能·windows·vscode·自动化·openai·codex·autohotkey