连接参数-Ttext
来源:互联网 发布:网球知乎 编辑:程序博客网 时间:2024/05/01 22:23
讨论-Ttext之前,先简单介绍一下工具:
readelf -h 读取ELF可执行文件头
readelf -S 查看ELF文件Section 信息
objdump -d 看目标文件汇编代码
以典型的bootloader为例,我们分析-Ttext的实际作用。
首先来看具体的两条命令
编译 $(CC) $(CFLAGS) -DKERNEL_START=$(TEXT_START) -c mbr_start.S -o $(OBJDIR)/mbr_start.o
链接 $(LD) -Ttext=0x7c00 -o $(OBJDIR)/mbr $(OBJDIR)/mbr_start.o $(OBJDIR)/mbr.o
第一行编译mbr_start.S并传入参数KERNEL_START,生成目标文件mbr_start.o;第二行,连接mbr_start.o和mbr.o生成mbr,并将程序重定向到0x7c00处。
即,-Ttext是连接时将初始地址重定向为0x7c00(若不注明此,则程序的起始地址为0)。比如,在mbr_start.S文件中函数inb()的编译完成后在mbr_start.o中的偏移地址是0x006b,则在连接时指定-Ttext=0x7c00,连接之后其地址为0x7c6b, 其他函数调用此函数时,也就会调用地址0x7c6b,而不会是0x006b。
那这个编译连接参数的意义是什么?比如bootloader, x86平台上,BIOS加载bootloader到0x7c00, 然后从0x7c00开始执行,那么你的bootloader则就需要在编译的时候指明-Ttext=0x7c00使得bootloader程序在以0x7c00为起始的地址空间内,否则程序运行时将因为地址空间紊乱无法正常运行。
原文:http://blog.csdn.net/happinux/article/details/5800996
- 关于连接参数-Ttext
- 连接参数-Ttext
- 关于连接参数-Ttext
- 关于连接参数-Ttext
- u-boot.lds与-Ttext $(TEXT_BASE)
- 连接池参数解析
- c3p0连接参数详解
- DBCP 连接池参数
- mongo连接池参数
- mysql连接参数详解
- DBCP连接池参数
- 如何连接宏参数
- 宏参数的连接
- 修改蓝牙连接参数
- mongodb连接参数
- 蓝牙连接参数说明
- DA14580 --- 连接参数
- 宏参数的连接
- 9、OC 访问控制符(@private @package @protected @public)
- 谁都没有资格嘲笑谁
- poj 3686 The Windy's 二分图最小权和匹配KM
- Leetcode----Same Tree
- 外籍男虐待中国养女:收养的孩子总说很饿 遭质疑就搬家
- 连接参数-Ttext
- 液晶屏VGH、VGH电压产生电路
- 房祖名牢狱生活曝光 明星监狱生活大揭秘
- 工作的日子
- MFC菜单资源ID加载到对话框上
- cmake install
- AJAX--onreadychange事件
- 8.4.3.2 函数式实现
- [SDOI2009]HH的项链 解题报告