如何在命令行中使用 Visual Studio 编译 x64 代码?
Posted
技术标签:
【中文标题】如何在命令行中使用 Visual Studio 编译 x64 代码?【英文标题】:How to compile x64 code with Visual Studio in command line? 【发布时间】:2011-02-02 15:18:32 【问题描述】:我想使用 Windows 命令行编译一个简单的 hello-world 风格的程序。
cl file_name.c
很简单。现在我想在 64 位中做同样的事情。我该怎么办?
【问题讨论】:
【参考方案1】:从 Visual Studio x64 命令提示符运行 cl。
【讨论】:
我该怎么做?我的开始菜单中只有一个 Visual Studio 命令提示符。这是我已经在使用的。 @Paperflyer:您可能没有安装 64 位编译器,请查看我的帖子。 我确实安装了它们。 (反正控制面板就是这么说的)【参考方案2】:您需要使用发出 x64 代码的 cl.exe 编译器版本。哪一个取决于您的设置。
让我们考虑一下您在 64 位计算机上的情况。为此,您需要使用位于
的编译器c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe
如果您使用的是 32 位机器,则需要使用位于
的交叉编译器c:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\cl.exe
【讨论】:
嗯,在 x64 机器上,有 2 个选项。可以使用 32 位 x64 交叉编译器或本机 64 位编译器。结果相同。 我有不同版本的 VC (2008),但我找到了编译器。它仍然产生奇怪的错误,但至少这个问题得到了解决。谢谢。【参考方案3】:正如其他人所提到的,答案取决于您使用的是本机 x64 编译器还是交叉编译器。这个网页应该可以帮助你http://msdn.microsoft.com/en-us/library/x4d2c09s.aspx
【讨论】:
【参考方案4】:您也可以使用批处理文件“Vcvarsall.bat”(默认情况下,该文件的完整路径是 C:\Program Files\Microsoft Visual Studio 8\VC\Vcvarsall.bat,对于 VS2005)。
如果未提供参数,此批处理文件将配置使用 x86 32 位编译器所需的环境变量。但它可用于配置任何 64 位编译器,例如使用本机 64 位编译器传递“amd64”作为参数。然后运行 cl.exe。
【讨论】:
【参考方案5】:凯尔是对的。这只是正确设置 PATH 环境变量的问题。常规 x86 编译器位于 vc\bin 子目录中。有两个64位编译器,一个32位编译器在vc\bin\x86_amd64中生成64位代码,一个64位编译器在vc\bin\amd64中生成64位代码。
默认的 Visual Studio 设置始终使用 32 位编译器来生成 64 位代码。
请注意,默认情况下不安装 64 位编译器。如果您没有使用自定义安装选项,则必须重新运行 setup.exe。并重新运行 SP1 安装程序。
【讨论】:
好的,但我得到 libcpmtd.lib(ios.obj):致命错误 LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突,我无法使用设置链接器选项/link /MACHINE:AMD64 in VS2013【参考方案6】:如果你有代码作为项目的一部分,你可以使用如下
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" myproject.sln /Build "Release|x64"
从以下链接获取
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/ed855b9d-55ef-49f1-bf27-f20a79be687e
【讨论】:
【参考方案7】:从“Visual Studio x64 命令提示符”或类似“VS 2017 的 x64 本机工具命令提示符”之类的东西运行 cl
。运行where cl
以查看您正在运行的“cl”的路径。路径中应包含“x64”或“amd64”之类的内容。
开始菜单搜索有时可能无济于事。尝试输入“vs20xx”或“vs 20xx”而不是“visual studio”来找到它。提示的名称随版本而变化。如果它没有说“64”,那么它会设置一个32位的环境。
64 位提示往往只是调用带有 64 位参数的“Vcvarsall.bat”,但该参数会随着时间而改变,并且可能不向后兼容。
【讨论】:
以上是关于如何在命令行中使用 Visual Studio 编译 x64 代码?的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中编译与在命令行中使用 cl 编译
当我仅使用链接器选项 /LTCG 时,为啥 Visual Studio 会在链接器命令行中显示选项 /PGD?
SSIS 包在 Visual Studio 和命令行中有效,但在代理中无效