GCC编译和链接过程

GCCGNU Compiler CollectionGNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如LinuxBSDMac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows

 

一、源代码

GCC编译和链接过程

 

 

 

二、编译过程

 

1)预处理:

GCC编译和链接过程

 

 

 预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些代码输出到一个“.i”文件中等待进一步处理。

结果:见文件0617_Demo.i

GCC编译和链接过程

 

 

 2)编译

 

GCC编译和链接过程

 

 

 编译就是把 C/C++代码(比如上面的".i"文件)“翻译”成汇编代码。

结果:见文件0617_Demo.s

GCC编译和链接过程

 

 

 3)汇编

 

GCC编译和链接过程

 

 

 红色箭头处的relocatable表示可重定位,也即是可以和库等依赖文件链接。

汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现位ELF目标文件(OBJ文件)

结果:见文件0617_Demo.o

GCC编译和链接过程

 

 

 这个就是没有连接的目标代码,也是01序列,需要使用二进制查看器如Hex Editor Neo等查看。

 

4)链接

GCC编译和链接过程

 

 

 链接就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序。如图中红色箭头所示。

结果:见文件0617_Demo

GCC编译和链接过程

 

 

 总结:在编译过程中。除非使用了"-c",“-S,"-E"选项(或者编译错误阻止了完整的过程),否则统一完整链接步骤。

 

三、链接原理

gcc -c -o 0617_Demo.o 0617_Demo.c 不作最后一步链接,得到0617_Demo.o二进制OBJ文件

gcc -v -o 0617_Demo 0617_Demo.o 先看一下链接过程是怎样的:

GCC编译和链接过程

 

 

  

l  crt1.ocrti.ocrtbegin.ocrtend.ocrtn.ogcc加入的系统标准启动文件,对于一般应用程序,这些启动是必需的。

l  -lc:链接libc库文件,其中libc库文件中就实现了printf等函数。

 

 

 

 

 

 

 

原文链接: https://www.cnblogs.com/ruigelwang/p/13197608.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    GCC编译和链接过程

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/359655

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
adminadmin
0 0
1.快速排序
上一篇 2023年3月2日 下午12:51
x86—32汇编(2)—局部变量
下一篇 2023年3月2日 下午12:51

相关推荐

  • 【Example】C++ 标准库 std::atomic 及 std::memory_order 2023年2月4日
  • 在operator=中对所有数据成员赋值 2023年2月7日
  • CPU控制程序 2023年2月8日
  • c struct struct array,pointer,uuid,memcpy 2023年4月19日
  • C/C++ 获取进程完整目录 2023年2月13日
  • C++ 微信多开 2023年2月12日
  • 12.8K

    我是职场上失宠的妃子

  • C++性能真的不如C吗?

    7.1K
  • 大话数据结构 高清PDF

    6.7K
  • string底层实现之SSO

    6.3K
  • 千百撸

    4.4K
  • GDB调试-从入门实践到原理

    3.7K
  • 什么是COM

    3.7K
  • std::string底层实现之COW(Copy-On-Write)

    3.6K
  • 智能指针-使用、避坑和实现

    3.6K
  • 彻底搞通TCP send和recv原理

    3.4K

聚圣源方姓男孩起名大全 大全空匣人型李姓男孩起名的四字词语起重机械名词术语桅杆起重机标准起名朱氏雪梅古诗戒中城搜读起名怎么起,有什么讲究姓潘起名女童迅捷文字识别姓张的怎麽起名李嘉诚430亿买下的英国酒吧裁员amongustubejapan商标第三类起名现代都市小说裴氏起名以党员身份参加大会的北大学生从八字看起名新的领导班子四神汤神界危机4.6密码布行起名字魔兽人口搜读小说youyourentiyishu国航网上值机江炎徐凤秋免费阅读小说破碎的记忆淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化