自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2)
  • 收藏
  • 关注

原创 链接器是如何链接的??

这个过程它会保留有用的符号和地址,如果地址找不到会报错,例如add.c生成的符号是 Add并且有一个有效地址0x1234(假设),test2.c里声明了函数Add,这里的Add也会生成符号Add但是它的地址是无效的,在链接的过程,相同的符号中会保留一个拥有有效地址的符号,并且和其它的符号main、printf等合并成新的符号表然后跟链接库链接在一起,这样就可以通过符号表把所有目标文件链接在一块了。2.目标文件其实个elf格式的文件,每个elf文件都有自己的段位,链接的时候会把相同段合并。

2024-07-18 16:04:51 403

原创 如何从代码到可执行程序?中间经历了什么?

通过符号表的合并和重定位(每一个.o文件其实就是一个符号表),把所有符号表合并和重定位,把有用的符号留下,把重复多余的符号去掉,然后通过合并后的符号表就可以跨文件把所有.o文件链接在一起。其实是一个符号表,我们在第三步编译的时候做的四件事里,最后一个是符号汇总就是把所有符号汇总起来到这里用上场了,生成符号表。我们看到又是一大堆看不懂的符号,其实这些全部是二进制指令,它现在是以文本的形式显示出来所以是看不懂的符号,我们用 od命令 查看。然后我们查看一下test2.i里面预编译后究竟产生了什么内容。

2024-07-17 16:16:03 401

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除