1.7 创建并运行第一个C程序
gcc编译器是一个ANSI标准编译器。一个C程序要经过很多的步骤,才能变为一个可运行或执行的程序。gcc编译器为你执行了很多的任务,其中最重要的任务包括以下几个:
预处理程序代码,并查找各种指令;
在适当的时候,生成错误代码和消息;
将程序代码编译成目标代码,并将其临时存储在硬盘上;
将任何必需的库链接到目标代码,创建一个可执行文件,并将其存储到硬盘上。
提示
ANSI是American National Standards Institute(美国国家标准研究院)的缩写。ANSI的一般目标是,为使用信息系统的人们提供计算标准。
在创建和保存C程序的时候,使用.c扩展名。这个扩展名是用C创建的程序的标准命名惯例。要创建一个新的C程序,从Windows下运行Notepad这样的一个文本编辑器,或者像下面这样使用nano或Vim:
nano hello.c
vim hello.c
技巧
nano是另一款常用的基于UNIX的文本编辑器,也是Cygwin软件包所附带的文本编辑器。从最终用户的角度来看,它使用起来比Vim更为直观和容易。但是,它确实不像Vim一样拥有那么多功能。尽管namo和其他的文本编辑器并不是安装Cygwin时候的默认选项,但是在安装的时候,你可以通过Editors区域下的Select Packages窗口来进行选择。
前面的两条命令,都会打开编辑器并创建一个名为hello.c的新文件。一旦使用nano或Vim这样的编辑器创建并保存了C程序,你就已经准备好使用gcc编译程序了。
从Cygwin UNIX shell中,输入如下内容:
gcc hello.c
如果程序成功地编译了,gcc会创建一个名为a.exe的、新的可执行文件。
注意
如果没有成功地运行编译后的程序,验证一下%systemdrive%:\ cygwin\bin(其中%systemdrive%是安装Cygwin的驱动器)目录结构已经成功地添加到系统的路径变量中了。
a.exe是这个版本的gcc所编译的所有C程序的默认的名称。如果你是在UNIX操作系统上的一个不同的gcc版本下编程,文件名可能是a.out。
每次使用gcc编译一个C程序的时候,它都会覆盖以前的a.exe文件中包含的数据。可以通过给gcc一个选项,来为可执行文件指定一个唯一的名称,从而改正这一点。指定一个具有唯一的名称的可执行文件的语法如下:
gcc programName –o executableName
关键字programName是你的C程序的名称,-o(字母o)选项告诉gcc,你将要指定一个唯一的编译名称,而executableName关键字是想要的输出文件的名称。如下是使用实际的文件名的另一个示例:
gcc hello.c -o hello.exe
在UNIX命令提示符输入如下的命令,可以访问gcc的man页面(用于UNIX命令的在线手册),并找到关于gcc的大量信息。
man gcc
要通过Cygwin U
N```
IX命令提示符来执行程序,输入如下内容:
```javascript
./hello
和Windows不同,当尝试执行一个程序的时候,UNIX shell不会默认在当前目录下查看。通过在编译后的程序之前带上一个./字符序列,我们告诉UNIX shell在当前目录下查找编译后的C程序,在这个例子中,当前目录就是hello目录。
如果你使用一个Microsoft Windows系统,也可以从基于Microsoft的命令行shell(通常称之为DOS命令提示符)来执行程序,只要直接输入程序的名称就行了(假设你位于工作目录之中)。
注意,在任何情况下,都不必在编译后的程序名的后面跟上文件扩展名.exe。