crazykickass 发表于 2011-12-30 19:22:40

LDS链接脚本,为什么数据段的加载域会放在运行域呢?

我自己写了 .lds 文件,但是编译以后, 产生的二进制文件很大,我用hexdump查看,发现有些数据段被放在了0x30000510 这个运行域了。所以中间有很多都是数据0。
我的.lds 文件如下。求解哈!
/*
Created by KFox 2011-11-20
Modified by KFox 2011-12-20
*/
OUTPUT_ARCH(arm)
ENTRY(start)
SECTIONS {
first 0x00000000 : AT(0x000) {
start.o(.text)
init.o(.text)
}
second 0x30000000 : AT(0X400) {
*(.text)
. = ALIGN(4);
*(.rodata)
. = ALIGN(4);
*.(data)
. = ALIGN(4);
*(.bss)
. = ALIGN(4);
*(COMMON)
}
}

为什么代码段和bss以及rodata段加载段正常,而.data段就不对了呢!是我有地方没注意到么!

我后来改了一下,发现弄成如下就好了。现在对lds反而越来越迷糊了!求助!

/*
Created by KFox2011-11-20
Modified by KFox 2011-12-20
*/
OUTPUT_ARCH(arm)
ENTRY(start)
SECTIONS {
first0x00000000 : AT(0x000) {
start.o(.text)
init.o(.text)
}
second 0x30000000 : AT(0X400) {
*(.text)
. = ALIGN(4);
*(.data)
. = ALIGN(4);
*(.rodata)
. = ALIGN(4);
*(.*)
}
}

为什么呢?难道是目标文件里面的数据域不叫 .data ?求助、
页: [1]
查看完整版本: LDS链接脚本,为什么数据段的加载域会放在运行域呢?