计算机系统基础答案第四章,计算机系统基础 -- 第四章 (程序的链接)

本文详细介绍了程序链接的概念,包括模块化和效率提升的优点。讨论了可执行文件与.o文件的区别,指出可执行文件的虚拟地址转化为逻辑地址。还探讨了ELF目标文件格式、符号表、重定位规则以及静态和动态链接的优缺点。这一章内容加深了对可执行文件生成过程的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机系统基础 -- 第四章 (程序的链接)

什么是程序的链接?

将 gcc 生成的若干个. 0 文件为后缀的, vc 输出为. obj 为后缀的可重定位目标文件组合起来, 生成一个可执行目标文件

程序链接的好处:

1, 模块化 (可分成不同模块全部编译成. o 文件后链接即可运行. 而不仅仅是只有一个. c 文件, 对于大工程来说清晰划分)

2, 效率高 (由于可以使多个文件同时编写, 多个模块同时修改, 因此这样提升了效率)

在链接先进行编译和汇编, 在第三章聊过

可执行文件与. o 文件的汇编差别在哪?

由于可执行文件是将可重定位二进制文件重新组合, 因此其自身的虚拟地址转化为了逻辑地址, 如下// test.c

intmain(inti,intj){

intx=i+j;

returnx;

}

// 使用 objdump -d test.o 反汇编出来的. o 文件

// test.o

Disassemblyofsection.text:

0000000000000000

:

0:55push%rbp

1:48 89 e5 mov %rsp,%rbp

4:89 7d ec mov %edi,-0x14(%rbp)

7:89 75 e8 mov %esi,-0x18(%rbp)

a:8b 55 ec mov -0x14(%rbp),%edx

d:8b 45 e8 mov -0x18(%rbp),%eax

10:01 d0 add %edx,%eax

12:89 45 fc mov %eax,-0x4(%rbp)

15:8b 45 fc mov -0x4(%rbp),%eax18:5dpop%rbp

19:c3 retq

// 每个.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值