gcc编译.c文件过程

 

1.总的来说,可以使用一下命令来完成预处理,编译,汇编,链接过程

gcc  hello.c -o hello 生成可执行文件hello

2.分过程来说明

第一,预处理过程

gcc -E hello.c >>hello.i 生成内容写入到文件hello.i中。对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等

第二,编译过程

gcc -S hello.i 生成文件hello.s  进行词法分析、语法分析(-fsyntax-only),接着会把源代码翻译成中间语言,即汇编语言

第三,汇编过程

gcc -c hello.s 生成目标文件hello.o 把作为中间结果的汇编代码翻译成了机器代码,即目标代码,不过它还不可以运行

第四,链接过程

gcc hello.o -o hello 生成可执行文件hello 链接是处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。链接又分为静态链接和动态链接,前者是程序开发阶段程序员用ld(gcc实际上在后台调用了ld)静态链接器手动链接的过程,而动态链接则是程序运行期间系统调用动态链接器(ld-linux.so)自动链接的过程

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值