“'m164' 未被识别为内部或外部命令”,使用 VS 2013 Developer Command Prompt 构建 OpenSSL

Posted

技术标签:

【中文标题】“\'m164\' 未被识别为内部或外部命令”,使用 VS 2013 Developer Command Prompt 构建 OpenSSL【英文标题】:"'m164' is not recognized as an internal or external command", building OpenSSL using VS 2013 Developer Command Prompt“'m164' 未被识别为内部或外部命令”,使用 VS 2013 Developer Command Prompt 构建 OpenSSL 【发布时间】:2016-06-20 18:31:15 【问题描述】:

我正在按照此处为 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 位。

【问题讨论】:

【参考方案1】:

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

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

在这一切正常之后!

【讨论】:

【参考方案2】:

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

【讨论】:

向构建工具传递“no-asm”参数似乎也可以。不知道这可能会产生什么影响。【参考方案3】:

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

这里的根本问题是您不应该寻找“m164.exe”,而应该寻找“ml64.exe”。注意小写 L 而不是数字 1。

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

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

现在从一开始就正确设置您的环境。如果您安装了 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\ 目录中找到。

【讨论】:

以上是关于“'m164' 未被识别为内部或外部命令”,使用 VS 2013 Developer Command Prompt 构建 OpenSSL的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份