You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022 CLI编译OpenSSL 3.0(含FIPS)触发LNK1108错误

OpenSSL 3.0 FIPS 编译 Windows 平台链接错误问题

尝试编译OpenSSL 3.0以获取FIPS合规能力,按文档要求安装了Strawberry Perl和NASM,已将NASM加入VS开发者CLI路径,以管理员权限执行以下命令:

perl Configure enable-fips
nmake
nmake install

首次解压源码后,perl Configure和nmake执行成功,但nmake install构建http_test.exe时失败,报致命错误LNK1108: cannot write file at 0x0。此前test目录已有成功写入的文件,权限问题可能性极低。

系统环境

  • Windows 10 19045.2846
  • 12核CPU,32GB内存(剩余17GB),1TB M.2 SSD(剩余155GB)
  • VS2022(17.4.5)、Strawberry Perl(5.32.1)、NASM(2.16.01)
  • OpenSSL 3.0.0(2023年5月3日下载)

排查过程

  • 重新解压源码编译非FIPS版本无问题,但FIPS编译后续执行nmake时也开始失败,所有测试组件编译均卡在同一环节。
  • 执行nmake test同样在构建http_test.exe时失败,因FIPS合规要求所有测试必须通过,无法跳过该步骤。
  • Linux Debian 11平台编译正常,但无法在Windows运行,且FIPS合规要求必须在目标平台编译,不能通过交叉编译解决。
  • 已花费8小时搜索解决方案,暂时无法访问GitHub提交OpenSSL Issue。
  • 在Makefile的LDFLAGS中添加/verbose后,链接输出显示"Finished pass 2"后报错。
  • 注意到Makefile中hmactest.exe使用libcrypto_static,而http_test.exe使用libcrypto;修改http_test.exe的依赖为libcrypto_static后,错误变为**"cannot write file at 0xA0000"**。
  • 尝试切换到VS2019开发者CLI编译,仍报相同错误。
  • link.exe返回错误码0x454,未找到对应含义;用dumpbin查看相关.obj文件未发现异常。

补充疑问与新发现

今日再次执行FIPS编译的nmake,日志显示http_test.exe无错误,但输出目录中并未生成该文件。观察编译脚本逻辑:先删除manifest,再执行链接,最后根据manifest生成exe,推断链接器未生成manifest导致exe未生成。
同时存在两个疑问:

  1. nmake install为何要重建整个test目录,而非仅补建缺失的http_test.exe?
  2. 链接器在nmake执行时静默失败(日志无报错但无exe生成),但在nmake install时总是明确报错,执行序列一致但结果不同,原因是什么?

内容的提问来源于stack exchange,提问作者Ragnorok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:22:40