链接、装载与库
恋喵大鲤鱼
一条不止于编码的鱼。
展开
-
程序的装载方式
程序执行时所需要的指令和数据必须在内存中才能够运行。最简单的就是静态装入:将程序运行所需要的指令和数据全都装入内存中。当程序所需要内存大于物理内存时,无法满足静态装入的要求,这个时候就需要使用动态装入了,其思想是将程序运行时当前不用的模块放在磁盘,使用的模块放在内存。动态装入典型的两种方法:覆盖装入(Overlay)和页映射(Paging),都利用了程序的局部性原理,将程序最常用的部分驻留在内存...原创 2019-08-11 22:02:35 · 1035 阅读 · 0 评论 -
认识目标文件的格式—— a.out COFF PE ELF
1.目标文件的常用格式目标文件是源代码编译后未进行链接的中间文件(Windows的.obj和Linux的.o),与可执行文件(Windows的.exe和Linux的ELF)的结构和内容相似,因此跟可执行文件采用同一种格式存储。PC平台常见的可执行文件格式主要有Windows的PE(Portable Executable)和Linux的ELF(Executable and Linkable For...原创 2019-06-15 22:59:34 · 1565 阅读 · 0 评论 -
认识目标文件的结构
1.目标文件简介目标文件是源代码编译但未链接的中间文件(Windows的.obj和Linux的.o),Windows的.obj采用 PE 格式,Linux 采用 ELF 格式,两种格式均是基于通用目标文件格式(COFF,Common Object File Format)变化而来,所以二者大致相同。本文以 Linux 的 ELF 格式的目标文件为例,进行介绍。目标文件一般包含编译后的机器指令代...原创 2019-06-21 21:22:10 · 1409 阅读 · 0 评论 -
认识目标文件的符号
符号是链接的粘合剂,没有符号无法完成链接。每一个目标文件都会有一个相应的符号表(Symbol Table),这个表里记录了目标文件中所用到的所有符号。1. 特殊符号当我们使用ld作为链接器来链接生产可执行文件时,它会为我们定义很多特殊的符号,这些符号并没有在你的程序中定义,但是你可以直接声明并且引用它,我们称之为特殊符号。其实这些符号是被定义在ld链接器的链接脚本中的,我们无须定义它们,但可以...原创 2019-06-23 20:39:01 · 1618 阅读 · 1 评论 -
使用 ld 命令链接目标文件生成可执行文件
使用ld链接目标文件生成可执行文件,用于取代命令g++,仅仅用于学习ld命令的使用,不用于实际的项目编译。首先看一个简单的C++源文件main.cpp。////@file:main.cpp//#include <iostream>using namespace std;int main(){ cout<&l原创 2019-03-03 21:55:12 · 7221 阅读 · 2 评论