深入理解计算机系统-----动态链接

1、建立C文件,构造共享库。

        前面和静态链接一样。(https://blog.csdn.net/zl6481033/article/details/85340096)。

        

        -fpic 选项指示编译器生成与位置无关的代码,-shared 选项指示链接器创建一个共享的目标文件。一旦创建了这个库就可以链接到程序中。

2、链接,创建可执行文件。

         

        这样就创建了一个可执行文件,文件的形式使它在运行时可以和libvector.so链接。基本思路是,当创建可执行文件时,静态执行一些链接,然后再程序加载时动态完成链接过程。

        动态链接器通过执行下面的重定位完成链接任务:重定位libc.so的文本和数据到某个内存段,重定位libvector.so的文本和数据到另一个内存段,重定位prog21中所有对lib.so和libvector.so定义的符号的引用。

        最后,动态链接器将控制传递给应用程序。从这个时刻开始,共享库的位置就固定了并且在程序执行过程中不会改变。

3、运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值