如何在Windows环境下开发C程序而不使用集成开发环境(IDE)?

5

我希望更深入地了解C程序的运行方式。

但是,IDE阻止了我们这样做。

那么,手动设置环境,在文本编辑器中编写代码,最后在提示符中运行它是可能的吗?

如果答案是肯定的,那么怎么做呢?


C程序的运行方式与其他程序相同,导航到IDE创建二进制文件的目录,双击可执行文件或打开命令窗口并键入可执行文件的路径。或者您感兴趣的是编译过程吗? - tvanfosson
我有点困惑。编译过程与理解程序如何运行有什么关系呢?毕竟,您始终可以在IDE之外运行已编译的程序(例如从cmd)。如果您想知道它是如何运行的,您可能需要查看汇编代码(可能在调试器内以获得更好的理解)和/或可执行文件格式,具体取决于您想了解什么。如果您只想知道如何在IDE之外进行编译,则需要考虑这样做的原因,因为即使是基本的IDE也更适合此目的。 - Grizzly
1
我认为通过调试器跟踪程序的执行会更有意义,可以更好地理解程序的运行方式。 - Chris
正如Chris在上面指出的那样,当你试图理解程序如何“运行”时,你将花费大量时间在调试器中。一个好的IDE实际上可以帮助你。但是,让一些“向导”为你编写代码并不会有所帮助。如果你正在编写所有的代码,我认为IDE不会影响你的实际理解。 - Tarydon
11个回答

9

正如其他人所说,安装 MinGW(假设您使用的是Windows)并将其bin目录添加到路径中。打开命令行窗口,并使用文本编辑器(例如记事本)创建一个名为foo.c的文件:

#include <stdio.h>
int main() {
  printf( "hello world\n" );
  return 0;
}

接下来,使用gcc编译器对其进行编译,创建一个名为foo.exe的可执行文件:

> gcc foo.c -o foo.exe

最后,在命令行中运行foo.exe:
> foo.exe
hello world

1
如果他已经安装了一个可以构建C程序的IDE,那么他已经安装了编译器。为什么要费力安装另一个呢? - JoeG
1
他的问题中并没有提到他安装了集成开发环境。 - anon
这就是我想要的!顺便问一下,是否可以将额外的第三方库添加到MinGW中? - user198729
@Unknown - 当然可以 - 库只是库,它们来自哪里并不重要。 - anon
如何在MinGW\lib目录下看到大量的*.o和*.a文件? - user198729
显示剩余2条评论

6
我不明白为什么一个集成开发环境应该阻碍理解C程序的工作原理。IDE通常抽象了构建过程,也就是为你创建构建规则、运行程序和调试器。这对程序本身的工作方式没有任何影响,只是更加“用户友好”(取决于您如何定义“用户友好”)。您始终可以在不使用IDE帮助的情况下构建程序。甚至可以从命令行使用Microsoft Visual Studio,在这种情况下您根本看不到GUI。Mac OS X上的XCode也是类似的。
如果您想在不使用任何IDE的情况下构建程序,则基本上可以像使用IDE一样编写源代码。甚至可以使用IDE作为编辑器。之后,您需要编译您的程序。IDE通常具有使源代码编写更容易的功能,例如自动完成结构元素、基本语法检查等。如果程序只由一个单独的源文件组成,那么这通常是相当简单的。如果您有多个源文件(除了通常的“Hello World”示例外,几乎所有其他情况都应该是真的),则仍然可以手动执行此操作。但是,这是一个费时且容易出错的过程。在Unix世界中,make是自动化此过程的选择工具。您可以使用MinGW在Windows上获得这样的环境。Cygwin在这里是另一个选择。但是,您也可以使用MSVC中的nmake并手动编写其输入(我自己从未这样做过)——它基本上与Makefile就像make一样。
创建一个Makefile可能并不容易。有几个生成器可以使它更容易。这基本上是IDE通过抽象构建过程所做的。 Makefile生成器的示例是autotools(有时也称为“GNU构建系统”)和cmake
从命令行构建程序也不会对程序是否具有GUI产生任何影响。你可以(再次假设在Windows下)从命令行运行任何.exe文件。如果它是GUI应用程序,则GUI将显示出来,如果它是控制台应用程序,则它将在控制台窗口中运行。

2
当然可以!有许多可用于 Windows 的 C 编译器,以下是一些适合入门的编译器:
  • Visual Studio 有一个免费的 Express 版本,并带有编译器
  • MinGW 是适用于 Windows 的 Gnu C 编译器
  • 还有很多其他的编译器,但以上这些应该足够了
至于文本编辑器,您可能想选择一个带有 C 语法高亮功能的编辑器,例如viEmacs或其他一些文本编辑器。掌握一个编辑器非常有用,无论您使用什么编程语言。

2
据我所知,MS C++编译器可以免费下载。 - Alan
1
没错,但你不需要使用Visual Studio来使用C/C++编译器。 - Alan
@Alan:据我所知,你只能通过VS软件包获得编译器 - 我不认为微软提供独立版本... - Christoph
@Christoph:没有什么能阻止你使用命令行来运行VC++。即使是从IDE构建的构建日志也会显示每个构建步骤所发出的命令行。 - Clifford
1
@Christoph 微软免费提供的“Windows SDK”包含32位和64位的C/C++编译器,您不需要任何形式的VS即可使用它们。 - jcoder

2

下载Cygwin并确保安装GCC,GNU C编译器。

您可以在文本编辑器中编写C程序,使用GCC进行编译,然后执行它们。


你不能仅仅为了允许命令行构建就推荐Cygwin巨兽。这真的是杀鸡焉用牛刀——它适用于将Linux代码移植到Windows,但不建议将其用于本地Win32开发。所有编译器都是命令行工具,无论是从IDE驱动还是其他方式。 - Clifford
克利福德是正确的。问题是如何在没有集成开发环境的情况下完成它。;) +1 - luser droog

1

我不知道你的意思。你想在文本编辑器中编写C程序,然后编译吗?当然,你可以这样做:

1- Write a C code
2- Get a compiler such as gcc (there is a windows version)
3- Compile it
4- Run it from console

但是,我不确定那是否是你想要了解的。


你能更具体地说明如何在没有集成开发环境的情况下编译和运行C代码吗? - user198729
DJGPP是一款Windows C编译器,同样也可以使用。 - Tom
@Tom:DJGPP不是Windows编译器,它是一个带有32位DOS扩展的DOS编译器。请参见:http://www.delorie.com/djgpp/v2faq/faq3_6.html - Clifford

1
当然。您需要类似于MinGW编译器来编译您的应用程序(或者您可以使用IDE提供的编译器)。然后只需使用CMD并执行适当的编译命令即可。
实际上,每个IDE都提供了更简单的方式来进行相同的编译。

1

如果他的意思是编译Windows程序,你可以使用Windows SDK(以前称为平台SDK)中提供的所有可用工具从命令行编译程序。该SDK可从Microsoft免费下载。我认为它拥有与Visual Studio相同甚至更多的工具。


将此点赞,因为大多数其他评论似乎建议使用基于gcc的编译器,这些编译器很好,但同样可以获得微软的编译器,并且针对Windows平台的大多数示例等都是针对它们的,因此在许多方面可能更容易。 - jcoder

0

如果你对大型项目的组织方式感兴趣,可以尝试下载一些像 Apache httpdPHP 这样的源代码。这两者都是用 C 语言编写的。在 Linux/Mac 平台上,你可以使用几个简单的命令(见文档)从命令行编译它们。


0

如果你想看看构建过程是如何工作的,大多数IDE(集成开发环境)都会创建一个构建日志,其中显示了实际发出的命令行来调用编译器/链接器等。没有任何阻止你直接在命令行上发出这些命令。

IDE通常还为您执行依赖项管理;手动维护这一点很困难,对于大型项目最好留给IDE处理。

您不需要下载和安装任何特定的编译器或工具链,因为有些人建议这样做;您当前的IDE所带的就足够了。例如,如果您有VC++2008(或2008 Express),则可以在此处找到命令行工具的描述here


0

以下是一些简单的步骤,可以让您在没有集成开发环境的情况下编译和运行C程序

1- 安装TCC(Turbo C编译器)

2- 打开记事本并编写C代码

3- 将文件保存为a.c,保存路径为C:\ TC \ BIN

4- 然后打开CMD

5- 通过“tcc a.c”编译C代码

6- 最后运行“a.exe”


感谢您发布答案!请务必仔细阅读有关自我推广的FAQ。还请注意,每次链接到您自己的网站/产品时,必须发布免责声明。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接