OpenSSL:Nmake致命错误U1077:'ias':返回代码'0x1'

Seb*_*orz 2 c++ windows perl openssl visual-c++

我正在尝试在Windows 10 64位上设置OpenSSL,按照说明到目前为止,在安装Visual Studio之后,我试图使用Visual c ++ 2008命令提示符在openssl目录中进行nmake以获取以下错误:

 "C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl"  "-omakefile" "crypto\include\internal\bn_conf.h.in" > crypto\include\internal\bn_conf.h
        "C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl"  "-omakefile" "crypto\include\internal\dso_conf.h.in" > crypto\include\internal\dso_conf.h
        "C:\Strawberry\perl\bin\perl.exe" "-I." -Mconfigdata "util\dofile.pl"  "-omakefile" "include\openssl\opensslconf.h.in" > include\openssl\opensslconf.h
        ias -d debug -ocrypto\aes\aes-ia64.obj "crypto\aes\aes-ia64.asm"
'ias' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'ias' : return code '0x1'
Stop.
Run Code Online (Sandbox Code Playgroud)

如果我尝试编译32位版本,则此错误不同.这导致引用NASM的错误|我试图安装而没有运气.

有人可以提出解决方案吗?

感谢您抽出宝贵时间阅读我的问题.

Sin*_*nür 5

该问题与长文件名无关.@Sebastian没有ias安装.在任何情况下他都不应该使用ias.

如果希望OpenSSL利用汇编语言优化,则需要nasm.

如果没有,你可以no-asm转到Configure.

取决于您的操作系统

在Windows上(仅选择一个目标进行配置):

$ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
Run Code Online (Sandbox Code Playgroud)

你需要VC-WIN32或者VC-WIN64A.我就是这样做的.1.0.1g是该帖子当时的当前版本.

  1. 下载最新的源代码发行版
  2. 启动适用的VC命令提示符
  3. (可选)获取zlib,构建DLL
  4. 获取nasm并构建可执行文件
  5. 如果您确实要求zlib,请将目录添加到INCLUDE和LIB:

    C:\…\openssl-1.0.1g> set INCLUDE=%INCLUDE%;C:\…\zlib-1.2.8
    C:\…\openssl-1.0.1g> set LIB=%LIB%;C:\…\zlib-1.2.8
    
    Run Code Online (Sandbox Code Playgroud)
  6. C:\…\openssl-1.0.1g> perl Configure VC-WIN64A zlib-dynamic --openssldir=C:\opt\OpenSSL

  7. C:\…\openssl-1.0.1g> ms\do_win64a

  8. C:\…\openssl-1.0.1g> nmake -f ms\ntdll.mak

  9. cd到out32dll,然后运行..\ms\test

  10. 确保所有测试通过:

  11. 通过执行安装:

    C:\…\openssl-1.0.1g\out32dll> cd ..
    C:\…\openssl-1.0.1g> nmake -f ms\ntdll.mak install
    
    Run Code Online (Sandbox Code Playgroud)

PS:如果您正在使用Strawberry Perl构建OpenSSL,请注意perl.exe将使用gcc编译,因此,您应该使用Strawberry Perl附带的gcc来构建OpenSSL.

如果要构建库以用于使用MSVC工具链构建的项目,则可以忽略此注释.