【发布时间】:2019-10-23 01:39:40
【问题描述】:
在 Windows 10 (x64) 上通过命令行构建 OpenSSL1.1 时,出现错误。 x86 构建成功。 x64构建错误的原因是什么? 出现LNK1112时,从解决方案的属性中引导如何更改目标计算机,但是这个设置可以通过命令行来更改吗?
■ 现象
使用 perl 生成 makefile 后,nmake 出现错误。
错误信息
cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 /I "." /I "crypto\include" /I "include" /I "crypto" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\"C:\\Program Files\\Common Files\\SSL\"" -D"ENGINESDIR=\"C:\\openssl\\build\\win\\x64\\lib\\engines-1_1\"" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"OPENSSL_USE_APPLINK" -D"NDEBUG" /Zs /showIncludes "crypto\cversion.c" 2>&1 > crypto\cversion.d
IF EXIST .manifest DEL /F /Q .manifest
IF EXIST libcrypto-1_1-x64.dll DEL /F /Q libcrypto-1_1-x64.dll
link /nologo /debug /dll /nologo /debug /implib:libcrypto.lib /out:libcrypto-1_1-x64.dll /def:libcrypto.def @C:\Users\XXXXXXXXX\AppData\Local\Temp\nm5483.tmp || (DEL /Q libcrypto-1_1-x64.* libcrypto.lib && EXIT 1)
crypto\cversion.obj : fatal error LNK1112: module machine type 'X64' conflicts with target machine type 'x86'
■ 环境
VC2019
Perl v5.28.1
构建目标 OpenSSL 1.1.1d
■ 构建命令(.bat)
同样的错误出现在“vcvars64.bat”中。
set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build;%PATH%
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
perl Configure no-asm --prefix=C:/openssl/build/win/x64 VC-WIN64A
nmake install
【问题讨论】: