免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4144 | 回复: 3
打印 上一主题 下一主题

[C] 问:使用gcc如何修改代码段的默认名称.text [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-11 21:26 |只看该作者 |倒序浏览
gcc编译出来的文件里,代码段的名称是.text
我编译出来的多个.o文件在链接的时候,需要将各个.o文件中的代码指定在特定的位置上(单片机上)。
所以我希望能为各个.o文件指定不同的代码段的名称,这样我链接的时候就可以根据不同的代码段名称分配不同起始地址。
如果用__attribute__((section("xxx"))),我可以将单个函数指定它的section,但是无法对整个.o 文件进行操作,一个个函数加实在有点傻。
不知道有没有什么好办法。

论坛徽章:
0
2 [报告]
发表于 2008-09-11 21:35 |只看该作者
这个用法比较有意思
如果代码段的名称都是.text,是不是link的时不能自己为代码段分配不同起始地址。

论坛徽章:
0
3 [报告]
发表于 2008-09-11 21:38 |只看该作者
如果都是.text的话,重新分配.text起始地址就没有意义了,因为全部都挪动了

论坛徽章:
0
4 [报告]
发表于 2008-09-12 09:30 |只看该作者
自己写一个linker脚本


  1. OUTPUT_ARCH(mips)
  2. ENTRY(main)
  3. SECTIONS
  4. {
  5.         .text1 0x0000 : { foo1.o(.text) }
  6.     .text2 0x1000 : { foo2.o(.text) }
  7.     .text3 0x2000 : { foo3.o(.text) }
  8.         .data : { *(.data) *(.sdata) }
  9.     .bss :  { *(.sbss) *(.scommon) *(.bss) *(COMMON) }
  10. }
复制代码


gcc -T my_linker_script -o foo foo1.o foo2.o foo3.o ...
or
ld -T my_linker_script -o foo foo1.o foo2.o foo3.o ...

[ 本帖最后由 prc 于 2008-9-12 09:31 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP