gcc编译C语言程序
对于初学c编程的同学来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对这门语言的理解很重要。只其然,知其所以然。
操作方法
- 01
编写c代码,并输入以下代码,生成文件hello.c [root@wahoo test]# vim hello.c #include <stdio.h> #define DISPLAY "hello c!" int main(void) { printf("%s\n", DISPLAY ); return 0; } ZZ()
- 02
预编译(Preprocessing) [root@wahoo test]#gcc -E hello.c -o hello.i 这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。
- 03
编译(Compilation) [root@wahoo test]#gcc -S hello.i -o hello.s 通过这一步我们知道 C语言跟汇编的 关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。 此时目录下多了一个hello.s文件,内容如图
- 04
汇编(Assembly) [root@wahoo test]#gcc -c hello.s -o hello.o 此步骤我们得到文件hello.o 大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式: [root@wahoo test]#readelf -a hello.o
- 05
链接(Linking/Build) [root@wahoo test]#gcc hello.o -o hello 这里我们就得到了一个可以直接在系统下执行的文件 hello 我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作 [root@wahoo test]#objdump -d hello
- 06
程序运行 [root@wahoo test]#./hello hello c!
- 07
总结:gcc 编译c程序的主要过程包括 预编译->编译->汇编->连接 四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处