于2011年12月13日 14:18:04,Peng潇湘竹影写到: > > > >> Date: Tue, 13 Dec 2011 14:05:35 +0800 >> From: yujun...@163.com >> To: ubuntu-zh@lists.ubuntu.com >> Subject: Re: [Ubuntu-zh] 如何让gcc把全局未初始化变量、结构体、数组的数据放在.data段中,分配空间 >> 不是把它们放在.bss段中,而是直接在二进制文件中 >> >> 求解一下: >> 为啥要把它们给放在.data数据段里呀? >> 2011-12-13 >>>>>>>>>>>>>>>>>>> 因为我想让我的数据结构在二进制文件中就分配空间 放在.bss段中是不在二进制文件中分配空间的 >> >> >> yujun.zl >> >> 发件人: Peng潇湘竹影 >> 发送时间: 2011-12-13 13:39 >> 收件人: linux ubuntu >> 主题: [Ubuntu-zh]如何让gcc把全局未初始化变量、结构体、数组的数据放在.data段中,分配空间 >> 不是把它们放在.bss段中,而是直接在二进制文件中 >> >> 我们知道 编译器在编译程序时 最终把程序的二进制文件最少分成三个段: >> .text (放代码) >> >> .data (放已初始化不为0的数据,占用二进制文件的大小 即使初始为0的数据扔然放在.bss只少在gcc上是如此) >> >> .bss(放未初始化的数据,不占用二进制文件的大小,而是在加载程序运行时由系统为这个段分配内存空间,并把这片内存初始化为0) >> >> 现在我想如何让gcc把全局未初始化变量、结构体、数组的数据放在.data段中,分配空间 不是把它们放在.bss段中,而是直接在二进制文件中 >> 除了在每个定义全局未初始化变量、结构体、数组的前面加上__attribute__((section(".data"))),还有没有全局的方法让gcc把所有全局未初始化 >> 变量、结构体、数组的数据放在.data段中 >> 先谢谢各位老师了!!这个问题很重要 在次真诚谢谢各位了!! >> -------------- 下一部分 -------------- >> 一个HTML附件被移除... >> URL: >> <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111213/e0e81421/attachment.html> >> -- >> ubuntu-zh mailing list >> ubuntu-zh@lists.ubuntu.com >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh >> -------------- 下一部分 -------------- >> 一个HTML附件被移除... >> URL: >> <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111213/c759f089/attachment.html> >> -- >> ubuntu-zh mailing list >> ubuntu-zh@lists.ubuntu.com >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh > > -------------- 下一部分 -------------- > 一个HTML附件被移除... > URL: > <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111213/b452b0dd/attachment.html>
如果需要这样的话……一个更好的解决方案……而且是更自然的解决方案,就是初始化你的变量。 -- ubuntu-zh mailing list ubuntu-zh@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh