在UNIX系统中,实现C源程序到可执行文件的这一转换过程的工具是cc。在大多数系统中cc实际上是一个shell命令文件。有些系统中的C编译程序可能并不叫cc而是其它的一个什么名称,如Sun工作站上常用的gcc等等。但这些都无关紧要。大多数系统中C编译命令的用法基本上都是类似的。我们这里介绍的将以SVR4上的C编译系统为基础。
cc基本用法
一般我们只需要将C源程序的名字写在CC命令行中,cc即可对这些源文件(.c文件)进行编译。如果这些源文件中都没有main()函数的定义,那么cc将只能生成与各源文件相对应的目标文件(.o文件)。如果某个源文件中有main()函数的定义,则将把所有目标文件链接起来生成相应的可执行文件。缺省的情况下这个可执行文件的名字将是a.out。
例如,假定myprog.c是一个包含有main()函数定义的C语言程序文件,其中代码如下:
/*********************************************
* An example source code with errors *
* Name:myprog.c *
*********************************************/
#include <stdio.h>;
#include <ctype.h>;
# define TESTOK 1
int TestInput(char* ValuInput)
{
while (*ValueInput)
if (!isdigit(*ValueInput))
return (! TESTOK);
else
*ValueInput++;
return ((100/atoi(ValueInput))? TESTOK:! TESTOK);
}
void main(int argc,char * argv[])
{
int i;
for (i=1; i<argc; i++)
if(TestInput (argv) == TESTOK)
printf("The %dth value '%s' \tis OK! \n",i,argv);
else
printf("The %dth value '%s' \tis BAD! \n" ,i,argv);
}
对于此程序中的错误(设计错误)我们暂不理会。下一章我们介绍程序调试时再回过头来看看如何排除这个错误。
我们看到。在这个源程序文件中,定义了两个函数:TestInput()和main(),定义了一个宏TESTOK,同时包含了两个标准的头文件。为了把这个C程序转换成可执行文件,在shell提示符下输入:
$cc myprog.c
在程序中没有任何语法错误的情况下,cc将在当前目录下生成一个名为a.out的可执行文件,如:
$cc myproc.c
$ ls -l
-rwx------ 1 yxz users 5812 Aug 31 15:32 a.out
-rw------- 1 yxz users 716 Aug 31 15:27 myproc.c
$
还可以看到这里a.out是一个可执行文件。当然这个程序由于在设计上有些失误,我们现在还不能马上就带参数运行。但不带参数运行还是可以的。只不过此时该程序什么都没有干,如:
$ a.out
$
在程序中我们通过main函数的两个参数argc和argv而使程序能够引用shell命令行参数;这是UNIX环境下一种常用的编程技术。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 用法 基本 文件 程序 编译 我们 命令 cc 优化 目录 进行 |
注册
个人空间
