《linker & loader》读书笔记

最近读《linker & loader》一书,对一直困扰自己的一些疑惑做了整理。

 

 

1.编译器与汇编器区别:两者没什么关系
编译器:将源文件(如c)生成中间代码,汇编或机器码。

汇编器:将汇编语言源码生成机器码。


但是,编译器和汇编器有协同关系,例如处理C源文件A:


C语言预处理器处理A,生成预处理的A
C语言编译预处理的A,生成汇编文件A
汇编器处理汇编文件A,生成目标文件A


2.自动链接标准库


n示例:g++ -o hello hello.cpp,编译hello.cpp为可执行

文件hello,自动连接标准C++库libstdc++.so

n示例:gcc –o hello hello.c,编译hello.c为可执行文件

hello(自动连接标准C库libc.so)

 

3.编译器、汇编器、链接器和加载器

编译器和汇编器创建了目标文件(包含由源程序生成的二进制代码和数据)。链接器
将多个目标文件合并成一个,加载器读取这些目标文件并将它们加载到内存中

Linux下加载器的例子? 个人认为是shell。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值