可重定位目标文件
来源:互联网 发布:matlab多目标遗传算法 编辑:程序博客网 时间:2024/05/17 03:52
【0】GCC将源代码转化成可执行代码的流程
- (1)C预处理器cpp扩展源代码,插入所有用#include命令指定的文件,并扩展声明的宏;
- (2)编译器ccl产生两个源代码的汇编代码:*.s;
- (3)汇编器as将汇编代码转化为二进制目标代码 :*.o ; (目标代码是机器代码的一种形式,它包含所有指令的二进制表示,但没有填入地址的全局值)
- (4)链接器ld将目标代码与实现库函数的代码合并,最终产生可执行代码文件;
【1】第一步,源码演说
【2】生成目标文件p107.o 及对其反汇编
2.1) gcc -O1 -c p107.c 》》 产生目标文件 p107.o (注意,此时还没有链接)
2.2) objdump -d p107.o >> p107-obj-dis.s 反汇编目标文件p107.o 得到 p107-obj-dis.s 如下:
【3】生成可执行文件p107及对其反汇编
3.1) gcc -O1 -o p107 p107.o p107-main.c 生成可执行文件p107(注意, 此时已经经过链接过程了)
3.2) objdump -d p107 >> p107-exe-dis.s 反汇编可执行文件 p107 , 得到p107-exe-dis.s 汇编文件,该文件内容如下:
【4】比较p107-obj-dis.s 和 p107-exe-dis.s
【总结】
一句话说完,重定位目标文件是汇编器 使用编译器输出的汇编语言输出的二进制目标文件, 要知道目标文件使用的是相对物理(内存)地址,重定位的目的就是变相对物理地址到绝对物理地址。(bingo)
0 0
- 可重定位目标文件
- 可重定位目标文件
- 目标文件(可重定位文件)结构
- 典型的ELF可重定位目标文件
- 典型的ELF可重定位目标文件
- 编译链接中的-可重定位目标文件
- 典型的ELF可重定位目标文件
- 编译链接中的-可重定位目标文件
- 可重定位目标文件(多位高手回答版,未综合)
- 程序编译-汇编-链接的理解02-可重定位目标文件具体包含的信息!
- 重定位目标文件,链接
- 可重定位的ELF文件(续)
- Linux 可重定位文件 ELF结构
- rt-thread装载可重定位文件的源码分析
- ELF(七)可重定位目标,部分摘自深入理解操作系统,深入理解linx内核
- 可重定位装入方式
- 重定位编译文件
- ELF文件重定位
- mina框架详解
- Win7 x64 系统环境下配置VS2013&PCL1.7.2
- C++(19)类与数据抽象
- Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
- CodeForces 445A
- 可重定位目标文件
- Code Forces 26A Almost Prime
- 回收站清空的东西找回来
- C++对象模型——Member的各种调用方式(第四章)
- 集合幂集
- android中键盘不遮挡ui界面的方法
- C++(20)构造函数
- solr5.2.1环境搭建
- LintCode-硬币排成线