LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1944|回复: 5

请问怎样连接,才能让bss段不占空间

[复制链接]
发表于 2005-6-16 11:58:16 | 显示全部楼层 |阅读模式
我的lds文件为:
SECTIONS {

. = 0x30004000;

.init : TA(0) { head.o main.o }

}

在main.c中定义了一个数组:
long test[500];

这样连接出来的binary文件比较大,我看其反汇编,发现代码是比较少的,只是文件的后面被扩展了500*4字节的空间。
请问怎样设置连接参数把这500*4去掉,代码是写到flash中去的。
谢谢
发表于 2005-6-16 16:06:14 | 显示全部楼层
Sorry,"TA(0)"是什么意思?
回复 支持 反对

使用道具 举报

发表于 2005-6-17 16:29:13 | 显示全部楼层
Post by dswei
我的lds文件为:
SECTIONS {

. = 0x30004000;

.init : TA(0) { head.o main.o }

}

在main.c中定义了一个数组:
long test[500];

这样连接出来的binary文件比较大,我看其反汇编,发现代码是比较少的,只是文件的后面被扩展了500*4字节的空间。
请问怎样设置连接参数把这500*4去掉,代码是写到flash中去的。
谢谢

bbs段本来就不占文件空间
回复 支持 反对

使用道具 举报

发表于 2005-6-17 16:30:39 | 显示全部楼层
Post by phyma
Sorry,"TA(0)"是什么意思?

同问
回复 支持 反对

使用道具 举报

发表于 2005-6-20 23:31:22 | 显示全部楼层
全局的未初始化变量存于.bss段中,
全局的已初始化变量存于.data段中,
函数内的自动变量都在栈上分配空间。

看你写的
long test[500];
应该是未初始化全局变量,存于.bss段中,莫非你的GCC不一样啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-21 01:37:57 | 显示全部楼层
上面写错了:应该是AT(0),把它去掉

这个问题解决了,改成下面的就行了。谢谢各位
SECTIONS {

. = 0x30004000;

.text : { *(.text) }
.data : { *(.data) }
.bss : { *(.bss) *(COMMON) }

}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表