Windows 是不是有集成的内置 C/C++ 编译器包?
Posted
技术标签:
【中文标题】Windows 是不是有集成的内置 C/C++ 编译器包?【英文标题】:Has Windows an integrated built-in C/C++ compiler package?Windows 是否有集成的内置 C/C++ 编译器包? 【发布时间】:2020-01-20 09:24:31 【问题描述】:我希望能够在不使用 IDE 的情况下在 Windows 环境下编译 C 和 C++ 代码,只需使用 Windows 命令提示符 (cmd.exe)。
我来自 Linux,您只需在终端中输入一个命令即可安装 gcc
软件包:
$ sudo apt install gcc
我想知道Windows安装文件夹内的一个包中是否有一个C/C++编译器集合,就像Linux中的一样,我只需要安装。
让我有理由问这个问题的是:
由于 Windows 的内核和 Windows API 是用 C 编写的,而实际 Windows 10 版本的许多高级应用程序都是用 C++ 编写的,因此直接提供合适的编译器套件也是合理的。这是我的想法模型,不需要与现实相匹配。
感谢您的帮助。
【问题讨论】:
如果您想在 Windows 上安装 GCC,请查看 MinGW。也可以在命令行使用 cl.exe 编译代码。 “直接提供合适的编译器套件也是合理的”windows 并不是真正已知的让用户控制的操作系统;) 您可以安装 C++ microsoft 工具集(而不是从命令行)然后您可以使用“本机”Windows 编译器 (cl.exe) 而无需安装 IDE。你也可以使用 MinGW,它可以让你为 windows 安装 gcc。 不幸的是,没有内置编译器。您需要安装一个。 @RobertS-ReinstateMonicaNMAKE
调用 cl.exe
和(如果成功)link.exe
。那是 MSVC 编译器,而不是不同的编译器。
【参考方案1】:
由于 Windows 的内核和 Windows API 是用 C 编写的
Microsoft 没有在安装中为 Windows 提供编译器或所需的 Windows SDK headers/libs(还包括许多其他有用的开发工具)。 Microsoft Visual C++(Visual Studio 的一部分)将是等效的“内置”选择,尽管我不确定 Microsoft 是否曾准确指定它们用于给定 Windows 构建的版本,并且通常有很多软件使用不同的构建编译器/版本(包括各种非 Microsoft 的)。
以及带有 IDE 和其他工具的完整 Visual Studio 包。 Microsoft 单独提供了一些组件,例如Build Tools for Visual Studio 2019。
我确信这是由于许多原因,例如大多数用户对编译自己的软件不感兴趣,并且 Microsoft 仍然将 Visual Studio 单独出售给更大的组织(历史上面向最认真的用户,但“社区”版现在对个人和小型企业)。
【讨论】:
【参考方案2】:奇怪的是它没有附带 C 编译器,我们需要安装一个,Mingw-w64 始终是我的选择,如果你想在任何地方使用它,你需要add the path in environment variables(第 12 步)。然后你可以使用gcc
命令,它像在Linux中更方便,不要忘记在更改后打开一个新的cmd以使其生效。
不幸的是,Windows 没有用于安装/删除内容的命令行工具以及我们从 Linux 中了解和喜爱的出色存储库基础架构。
【讨论】:
如果您安装整个 MSYS2 工具包而不是仅安装 GCC,您将获得链接到与 linux 发行版一样工作的包存储库的命令行工具。 @anastaciu 使用 MingW 是一个很好的选择。我以前使用过 MingW。尽管如此,在通过 MingW 实现在 Windows 中使用诸如gcc
之类的第三方编译器套件之前,我想更多地了解微软自己的方式。谢谢你,anastaciu 的小费。
@RobertS-ReinstateMonica 这是一个很好的心态,我使用 Visual Studio Community 2019,它已经取得了长足的进步,它现在是一个很棒的 IDE,我的最爱之一,也就是说,它是内置的在我看来,开发工具的设计并没有真正考虑到命令行的使用,但我可能是错的。
Mingw 最大的警告是它使用了与 MSVC 不同的、不兼容的 ABI。这意味着您不能将 mingw gcc 与为 MSVC 使用而编译的 C++ 库一起使用。反之亦然,导致我们在 Windows 上有两个不兼容的 C++ 生态系统的不幸情况:MSVC 是本地生态系统,而 Mingw 是用于与尚未移植到 MSVC 的 GNU 组件交互的生态系统。请注意,与 mingw 的 gcc 不同,Windows 的 clang 能够使用 MSVC ABI 生成本机 C++ 应用程序。【参考方案3】:
你需要两件事:
命令行构建工具。这些可以在 Visual Studio 工具 -> Visual Studio 构建工具 下的Visual Studio Downloads 页面上找到。这将包括 MSVC 构建工具链的编译器 (cl.exe
) 和链接器 (link.exe
)。
Windows SDK。目前最新版本的 SDK 可以是found here。这个页面有移动的趋势,但谷歌搜索 Windows SDK 通常会立即为您提供正确的页面。 SDK 包含构建 Windows 应用程序和使用 Windows 本机 API 所需的所有头文件和库。 Windows SDK 包含很多您可能需要也可能不需要的东西。您几乎肯定会想要安装Windows SDK for Desktop C++ x86 Apps
和Windows SDK for Desktop C++ amd64 Apps
组件。大多数其他东西应该是可选的,但其中一些仍然非常有用。
您可能需要下载其他软件包,例如 Windows Debugger(这是一个与 Visual Studio 调试器完全不同的应用程序)或 Driver SDK,具体取决于您想要什么类型的东西发展。
请注意,即使您最终不打算使用 IDE,安装完整的 Visual Studio 社区版也是获得工作构建环境的一种更方便的方法,因此除非您有充分的理由不到,只需使用完整包并选择从不打开 IDE。
【讨论】:
【参考方案4】:Windows 10 上可用的内置编译器适用于 VisualBasic、C#、JScript。 为了提高应用程序的速度和性能,“ngen.exe 创建本地映像,这些文件包含已编译的特定于处理器的机器代码,并将它们安装到本地计算机上的本地映像缓存中。运行时可以使用缓存中的本地映像代替使用即时 (JIT) 编译器编译原始程序集”。
对于低级程序员,ilasm.exe(IL Assembler)随Windows一起提供,也便于“工具和编译器”的开发;因此您甚至可以创建自己的语言或为当前语言构建更好的编译器,或者“在低级别调试代码并了解 .NET 如何处理您的高级代码”,或者“为新的 .NET 编写自己的编译器语言。”
对于 Web 程序员,AspNetCompiler 预编译服务器端 ASP.NET Web 应用程序,因此 helps application performance because end users do not encounter a delay on the first request to the application。
所有编译器和汇编器都内置在没有 IDE 的 Windows 中,可以从“Windows 命令提示符 (cmd.exe)”运行,因此无需额外下载;位于文件夹:C:\Windows\Microsoft.NET\Framework\vx.x.xxxxx\ .
注意:C# 基于 JScript。
编译器:
vbc.exe csc.exe jsc.exe ilasm.exe ngen.exe aspnet_compiler.exe附录:
如果您仍在寻找 C 编译器来处理您已经花费了一生的 C 源代码,那么(无需下载)您可以使用高级语言制作 /write a C compiler,然后使用低级语言。
This guide 将“向您介绍构建您自己的 .NET 编译器所需的高级架构、理论和 .NET Framework API”。
【讨论】:
【参考方案5】:您可以将gcc
用于Windows。例如mingw
、tdm-gcc
、mingw-68
、Cygwin
等。它们中的每一个都允许您在 c/c++
上工作。但是,如果您不确定安装过程,并且不想自己完成所有工作,最简单的解决方案是下载dev-c++
或code-blocks
之类的东西。
cygwin:https://cygwin.com/
mingw-64:http://mingw-w64.org/doku.php
可在此处找到可下载的文件(mingw
、dev-c++
):https://sourceforge.net/
【讨论】:
【参考方案6】:您还可以安装 Microsoft 编译器。我通常通过安装整个视觉工作室来做到这一点。
【讨论】:
那个“微软编译器”叫什么名字,如何单独安装?并且我以后在安装它时也可以在没有 IDE 的情况下使用这个编译器吗?用“visual studio”是指Microsoft Visual Studio 还是Microsoft Visual C++? @RobertS-ReinstateMonica 见en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B。您通常通过安装 Visual Studio 来获得 MSVC(这样您还可以获得所有必要的库/框架组件,用于您想要进行的开发)。请注意,Visual Studio 具有免费许可证(非免费许可证主要添加企业/团队功能),但它是封闭源代码(与大多数 MS 生态系统一样)。 @MaxLanghof 好的,我了解了 MSVC 和 Visual Studio 部分。但是那个“微软编译器”P__J__ 已经说过了。我的假设是否正确,这个“微软编译器”是cl.exe
?我以后可以在没有 IDE 的情况下使用这个编译器吗?
@RobertS-ReinstateMonica 这是编译器,是的。链接器是link.exe
。您可能想看看docs.microsoft.com/en-us/cpp/build/reference/…,因为这两个不是工具链的唯一部分。是的,您可以在没有 IDE 的情况下使用所有这些。我不确定您是否可以一开始就跳过安装 IDE。
@RobertS-ReinstateMonica 真的只是一个“编译器”本身没有用,GCC 也是多个组件,其他 Linux 包提供 C 运行时和头文件等必需品。 VS 或独立构建工具具有命令行选项,但以这种方式开发相当罕见,即使在 VS 项目文件上使用msbuild
而不是直接使用cl.exe
/link.exe
/等。很常见。以上是关于Windows 是不是有集成的内置 C/C++ 编译器包?的主要内容,如果未能解决你的问题,请参考以下文章