0

我有一个 64 位 Windows 操作系统,我使用 VS2008 编写程序。我注意到 bin 文件夹中有 3 个编译器:一个 amd64 、 x86_amd64 和一个在 bin 目录中(至少我认为它是!)。我使用 SCONS 来编译我的程序,当我使用--tree=allin scons 时,我可以看到它使用 amd64 编译器。我有一个 Intel i5 处理器,但我没有指定在 SCONS 中使用哪个编译器,那么为什么要使用它amd64

据我了解,x86_amd64如果您在 32 位机器上并且想要编译 64 位程序,那么 amd64 是否用于 64 位程序,而不管 CPU 是什么?,如果是这样,那么目的是什么在cl.exebin 目录中?,有人可以向我解释一下吗?

另外,有什么方法可以查看 VS2008 正在使用哪个编译器?我找不到任何信息。在构建日志中。

4

2 回答 2

1

cl.exe 控制编译器和链接器。:) 在这里看到并学习:

http://msdn.microsoft.com/en-us/library/9s7c9wdw%28v=vs.80%29.aspx

我知道它与 2k5 有关,但仍然相关。

尽管据我所知,你所说的一切都是正确的。

我相信您可以在 VS 的属性中看到 cl 的命令行选项。从那里我相信如果您从实际命令行运行该命令,您可以看到它向编译器和链接器发出的后续命令,此时您可以看到它使用的编译器。

于 2012-06-15T10:09:49.513 回答
1

如果你需要改变 SCons 使用的 C++ 编译器,你可以修改这里CXX提到的构造变量。(我假设您使用的是 C++)

这是我如何为我的一个项目执行此操作的示例:

env.Replace(CXX  = '/app/gcc/4.3.4/bin/c++')
env.Replace(CPP  = '/app/gcc/4.3.4/bin/c++')
env.Replace(CC   = '/app/gcc/4.3.4/bin/gcc')
env.Replace(LINK = '/app/gcc/4.3.4/bin/c++')

请注意,这些是 linux 路径,您必须为 Windows 相应地插入和格式化路径。这可以使用 python os.path.join() 函数轻松且可移植地完成,如下所示:

import os
thePath = os.path.join('c:', 'dir1', 'subdir')

在这种情况下,thePath 应该是“C:\dir1\subdir”,所以如您所见,您不必担心正斜杠或反斜杠。

于 2012-06-15T10:47:44.880 回答