首先我们的目录下有两个C程序,功能很简单就是求一个整数的阶乘
factorial.c
main.c
编译main.c,factorial.c
我们看见多了两个文件:main.o,factorial.o,是我们编译之后产生的目标文件。
接着我们通过链接来生成可执行文件main
为什么输出文件main后面要跟main.o,还有factorial.o呢?这里需要做些解释:
[list]
[*]main.o是包含main函数的主体程序的目标文件。
[*]factorial.o是main.o所调用的函数factorial(int n)的实现文件的目标程序,在链接的时候必须详细给出。
[/list]同时,我们发现又多了一个文件main,它就是我们最终的可执行文件,执行一下看看结果:
这样一来我们的第一C程序从编译到运行的过程就算完成了。
/home/l/g/tomotoboy/c >ls
factorial.c main.c
factorial.c
int factorial(int n)
{
if(n<=1)
return 1;
else
return factorial(n-1)*n;
}
main.c
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int n;
if (argc < 2)
{
printf ("Usage: %s n\n", argv [0]);
return -1;
}
else
{
n = atoi (argv[1]);
printf ("Factorial of %d is %d.\n", n, factorial (n));
}
return 0;
}
编译main.c,factorial.c
/home/l/g/tomotoboy/c >gcc -c main.c factorial.c
/home/l/g/tomotoboy/c >ls
factorial.c factorial.o main.c main.o
我们看见多了两个文件:main.o,factorial.o,是我们编译之后产生的目标文件。
接着我们通过链接来生成可执行文件main
/home/l/g/tomotoboy/c >gcc -o main main.o factorial.o
/home/l/g/tomotoboy/c >ls
factorial.c factorial.o main main.c main.o
为什么输出文件main后面要跟main.o,还有factorial.o呢?这里需要做些解释:
[list]
[*]main.o是包含main函数的主体程序的目标文件。
[*]factorial.o是main.o所调用的函数factorial(int n)的实现文件的目标程序,在链接的时候必须详细给出。
[/list]同时,我们发现又多了一个文件main,它就是我们最终的可执行文件,执行一下看看结果:
/home/l/g/tomotoboy/c >main 9
Factorial of 9 is 362880.
这样一来我们的第一C程序从编译到运行的过程就算完成了。