“'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有三种方式(不使用,动态使用,静态使用,默认是动态使用)