1.编辑程序代码即源码
[root@Server01 ~]# vim hello.c <==用 C 语言写的程序扩展名建议用.c
include
int main(void)
{
printf("Hello World\n");
}
第一行的那个“#”并不是注解。
2.开始编译与测试运行
[root@Server01 ~]# gcc hello.c
[root@Server01 ~]# ll hello.c a.out
-rwxr-xr-x. 1 root root 8512 Jul 15 21:18 a.out <==此时会生成这个文件名
-rw-r--r--. 1 root root 72 Jul 15 21:17 hello.c
[root@Server01 ~]# ./a.out
Hello World <==运行结果
如果直接以gcc编译源码,并且没有加上任何参数,则执行文件的文件名会被自动设置为a.out这个文件名,就能够直接执行./a.out这个执行文件。
即:hello.c就是源码,而gcc就是编译器,至于a.out就是编译成功的可执行文件。
如果想要生成目标文件(object file)来进行其他的操作,而且执行文件的文件名也不要用默认的a.out,那该如何做呢?
修改编译与测试:
[root@Server01 ~]# gcc -c hello.c
[root@Server01 ~]# ll hello
-rw-r--r--. 1 root root 72 Jul 15 21:17 hello.c
-rw-r--r--. 1 root root 1496 Jul 15 21:20 hello.o <==这就是生成的目标文件
[root@Server01 ~]# gcc -o hello hello.o <==小写字母o!
[root@Server01 ~]# ll hello
-rwxr-xr-x. 1 root root 8512 Jul 15 21:20 hello <==这就是可执行文件(-o 的结果)
-rw-r--r--. 1 root root 72 Jul 15 21:17 hello.c
-rw-r--r--. 1 root root 1496 Jul 15 21:20 hello.o
[root@Server01 ~]# ./hello
Hello World
通过这个操作,可以得到hello及hello.o两个文件,真正可以执行的是hello这个二进制文件(binary program)。