程序员的自我修养 chapeter 6 可执行文件(.o)及动态链接(.a)的装载与进程

p150 -177

6 可执行文件的装载与进程

  • readelf
    -l program headers [ 装载的view ]
    -S section-headers [ 链接的view ]

7 动态链接

  • 静态链接 程序如果多的话 比较浪费空间 所以需要.so
  • 看到了“地址无关代码” 然后就觉得暂时用不到 或者不需要了解那么深入了= =

question 看看别人笔记吧

  • 第六章节看到段地址对齐 、进程栈初始化 就没看了 ,后面有空再看吧

  • p182 动态链接是怎么实现的??静态的时候,多个.o文件汇总在一起生成一个新的可执行文件,虚拟地址啥的写得明明白白,但是现在咋办,系统是咋知道有没有加载进去的???

    • 还有插件,是怎么通过动态链接的这个性质搞定的啊 p 183
  • -l 就是静态链接吗

    静态库和动态库都可以,以库名为math的库为例,-lmath表示库文件名是libmath.so或者libmath.a(Linux下的库文件都要以lib开头,其中.so是动态库,.a是静态库),但是如果动态库和静态库都有的情况下,优先会认为是静态库

  • .a文件和.so文件区别 .a文件就是静态链接版本的所有集合吗

    .a相当于多个.o文件的集合,但是.so 不是哦!

  • 为什么这里所有的都有两份啊 甚至还有三份的
    在这里插入图片描述

这个其实就叫maps,就是某个地址的符号来源于哪里会写出来,两份或者三份是因为有多个符号来自于同一个文件罢了,他们加载进来的地址信息是不一样的。maps是很方便用于debug的,具体的原理这里就不详述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值