gcc怎么编写c语言程序,gcc如何编译C语言程序

gcc编译C语言程序的方法是什么,那么gcc如何编译C语言程序的呢/下面是学习啦小编收集整理的gcc如何编译C语言程序,希望对大家有帮助~~

gcc编译C语言程序的方法

编写c代码,并输入以下代码,生成文件hello.c

[root@wahoo test]# vim hello.c

#include

#define DISPLAY "hello c!"

int main(void)

{

printf("%s\n", DISPLAY );

return 0;

}

ZZ(说明:ZZ当前文件进行快速保存操作)

预编译(Preprocessing)

会对各种预处理指令(#include #define #ifdef 等#开始的代码行)进行处理,删除注释和多余的空白字符,生成一份新的代码

[root@wahoo test]#gcc -E hello.c -o hello.i

E 参数 通知gcc对目标文件进行预编译,这里是对文件hello.c文件

o 参数 是对命令输出结果进行导入操作,这里是把 gcc -E hello.c 操作结果输出到文件hello.i(命名要自定义)中进行保存

这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。

3d8e7f9cc5b1b432db093b9f038d4a29.png

编译(Compilation)

对代码进行语法、语义分析和错误判断,生成汇编代码文件

[root@wahoo test]#gcc -S hello.i -o hello.s

S 参数 通知gcc对目标文件进行编译,这里是对文件hello.i文件

通过这一步我们知道 C语言跟汇编的 关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。

此时目录下多了一个hello.s文件,内容如图

3fb7417009931bf90a9429815986d994.png

汇编(Assembly)

把汇编代码转换与计算机可认识的二进制文件,要知道计算机只认识0和1呢

[root@wahoo test]#gcc -c hello.s -o hello.o

c 参数 通知gcc对目标文件执行指令转换操作

此步骤我们得到文件hello.o

大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:

[root@wahoo test]#readelf -a hello.o

7d91636de7efda6d5ebd9e3cc4baa18e.png

链接(Linking/Build)

通俗的讲就是把多个*.o文件合并成一个可执行文件,二进制指令文件

[root@wahoo test]#gcc hello.o -o hello

这里我们就得到了一个可以直接在系统下执行的文件 hello

我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作

[root@wahoo test]#objdump -d hello

6b203ad07f092bf0929299097d683b88.png

程序运行

[root@wahoo test]#./hello

hello c!

537cbbe463f7f9eaafab117b4e45b3de.png

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值