gcc编译器

本文详细介绍了gcc编译过程,包括.c和.cpp文件的预处理、编译、汇编和链接,以及头文件、库文件和动态链接的相关知识。强调了从原始机器码到高级语言的演进,以及头文件搜索和库管理的技巧。
摘要由CSDN通过智能技术生成

gcc编译过程:从最贴近人的语言一步步变成能被机器听懂的语言

.c与.cpp文件,有程序员撰写

预处理后编译,得到.i文件。-E为预处理命令;-o为编译命令,但非常多功能

#开头的为预处理命令

汇编后,得到.s文件。-c为汇编命令

PS:如果出现头文件找不到的情况,可以在一句gcc命令后面以"./"开头指定查找头文件的文件目录,如gcc -c -o main.o main.c -I ./。"./"表示本地目录。

链接后,得到.o文件。

PS:不同的交叉编译器工具链的前缀不同,如arm-linux-gcc

为什么会有这么多复杂的操作呢?其实这些步骤已经相当简化了。最早的程序员都是像电工一样,不停地拨弄开关和电线的。后来变成了打孔地纸带来保存仅包含0与1的代码,不经过长时间专业的训练,肯定是看不懂的。因此,程序员必须要记住机器码,而机器码显然是非人性化的。为方便记住,便提出了”英文助记符“,也就是汇编语言。最后才出现了高级语言,所以我们现在学的其实是最简单的部分,而复杂的编译过程也不过是机器希望试图自己语言的最后一丝抵抗而已。

关于头文件的一些小tips

头文件:<> 会令计算机在指定的目录中寻找,也可以用‘-I(i的大写) dir’的方式指定目录

库文件:-l(L的小写) 会在指定的lib目录下找,也可以用-L dir指定目录寻找

运行时的动态库:so 会有一个默认目录,也可以用 LD_LIBRARY_PATH='  ' 来指定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值