gcc编译C语言程序

作者:哈哈小脸 | 创建时间: 2023-05-18
对于初学c编程的同学来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对这门语言的理解很重要。只其然,知其所以然。...
gcc编译C语言程序

操作方法

编写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()

预编译(Preprocessing) [root@wahoo test]#gcc -E hello.c -o hello.i 这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。

编译(Compilation) [root@wahoo test]#gcc -S hello.i -o hello.s 通过这一步我们知道 C语言跟汇编的 关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。 此时目录下多了一个hello.s文件,内容如图

汇编(Assembly) [root@wahoo test]#gcc -c hello.s -o hello.o 此步骤我们得到文件hello.o 大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式: [root@wahoo test]#readelf -a hello.o

链接(Linking/Build) [root@wahoo test]#gcc hello.o -o hello 这里我们就得到了一个可以直接在系统下执行的文件 hello 我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作 [root@wahoo test]#objdump -d hello

程序运行 [root@wahoo test]#./hello hello c!

总结:gcc 编译c程序的主要过程包括 预编译->编译->汇编->连接 四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处

温馨提示

可以直接通过 gcc hello.c -o hello 来生成可执行文件,这只是把中步操作隐藏起来了
一定要多动手操作,这里只是一个流程,需要你的行为把它内化为你自己的东西
点击展开全文

更多推荐