“'m164' 未被识别为内部或外部命令”,使用 VS 2013 开发人员命令提示构建 OpenSSL

"'m164' is not recognized as an internal or external command", building OpenSSL using VS 2013 Developer Command Prompt

我在此处遵循为 Visual Studio 构建 OpenSSL 的指南:http://developer.covenanteyes.com/building-openssl-for-visual-studio/

显然,我只需要最新版本的 OpenSSL 源代码、Active Perl 或 Strawberry Perl,以及 Visual Studio 2010。我使用的是 2013,但我还是想试试看.当我执行 nmake 命令时,出现如下屏幕截图所示的错误:

我猜这是因为我使用的是 VS 2013 而不是 2010?有谁知道解决这个问题的方法,或者有谁知道我可以用来让 OpenSSL 在 VS 2013 中工作的指南?我正在使用 Windows 7 64 位。

我在 2016 年 6 月 26 日遇到了同样的错误。显然 m164.exe 是 AMD 板上的汇编程序(我使用的是 Intel,它是 ml.exe)。我无法解决它。但是32位版本没有同样的问题。

这对我有用:
显然这个问题是由我这边造成的,因为缺少环境变量设置。根据我安装的 OpenSSL 文档 Microsft Platform SDK,此外,在我的机器上我有 Microsoft Visual Studio 2013,但仍然必须设置环境变量,如下所述:

  1. 通过 运行 vcvars64.bat 批处理文件为 Visual-Studio(我的情况是 2013)设置环境变量:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat
  2. [可选]
    在我的机器上,情况是一些二进制文件已经构建,但是环境变量错误,所以我首先必须通过 运行 以下命令彻底清理构建环境:
    nmake -f ms\ntdll.mak reallyclean
  3. 然后我按照 INSTALL.W64 文件中的描述重新开始构建过程:
    1. perl Configure VC-WIN64A
    2. ms\do_win64a
    3. nmake -f ms\ntdll.mak
    4. cd out32dll
    5. ..\ms\test


之后一切正常!

@PazO 的回答的第 1 部分帮助我最终找到了解决这个问题的方法,而@Hugh 的回答帮助我首先找出了问题所在。

这里的根本问题是您不应该寻找“m164.exe”,而应该寻找“ml[=42=” ]64.exe”。请注意小写字母 L 而不是数字 1。

问题中的 link 不再可用,所以我不知道拼写错误是在另一个库中还是手动创建的,但修复它理论上应该可以解决该场景中的问题。

以下是我认为可能对收到相同消息的其他人有用的附加信息。

现在开始正确设置您的环境。如果您安装了 Visual Studio,我不知道它是从哪个版本开始执行此操作的,但它会将快捷方式放入您的开始菜单中,以启动带有预配置环境的控制台。

以下,将[YEAR]替换为Visual Studio的安装版本,如2019.

有一个用于命令提示符或 powershell 的通用开发人员控制台,分别名为 Developer Command Prompt for VS [YEAR]Developer PowerShell for VS [YEAR]

快捷方式文件夹可以通过打开 运行 并执行 shell:common start menu,然后导航到 Programs\Visual Studio [YEAR]\Visual Studio Tools\VC\ 找到。 或者,完整路径将类似于 %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Visual Studio [YEAR]\Visual Studio Tools\VC\。在这个目录中是特定架构的快捷方式(最终 运行 相应的 vcvars .bat 文件)。此外,此文件夹上方包含上一段中提到的“开发人员”控制台。

为了完成起见,那些 vcvars .bat 文件可以在 Visual Studio 的社区版本中 - 同样可以在 %ProgramFiles(x86)%\Microsoft Visual Studio\[YEAR]\Community\Auxiliary\Build\ 目录中找到。