• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

嵌入式系统编程中,C程序中Section和Segment?

沃尔夫斯堡的羊 2019-01-15 浏览量:1145

如题,在应用ARM DS做arm相关的开发时,C程序编译后查看out文件axf格式,其中分析中有Section和Segment,请问这两者具体有什么区别?Build完工程时,工程中的段不是编译器自己设定好的?为啥还可以更改lds脚本呢?指定相关的段呢?

在嵌入式系统编程中,是不是在Build工程前后即输入,和输出阶段是不是都有段的概念?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1. ELF中的section主要提供给linker使用, 而segment提供给Loader用,linker需要关心.text .rel.text .data .rodata等等,关键是linker需要做relocation。而Loader只需要知道Read/Write/Execute的属性。a.out格式没有这种区分。(注意现在使用gcc编译出来的a.out文件只是取该名字而已,文件格式是elf的.)


    2.一个executable的ELF文件可以没有section,但必须有segment。ELF文件中间部分是共用的(也就是代码段、数据段等),如shared objects就可以同时拥有Program header table和Section Header Table,这样load完后还可以relocate。
    -:https://blog.csdn.net/joker0910/article/details/7655606

    • 发布于 2019-02-12
    • 举报
    • 评论 0
    • -1
    • 0

其他答案 数量:5
  • 作用是相同的,都是在程序中"逻辑地"规划一段区域,此区域便是节。

    section称为节,是指在汇编源码中经由关键字section或segment修饰、逻辑划分的指令或数据区域,汇编器会将这两个关键字修饰的区域在目标文件中编译成节。

    segment称为段,是链接器根据目标文件中属性相同的多个section合并后的section集合

    • 发布于2019-01-15
    • 举报
    • 评论 0
    • 0
    • 0

  • segment 和 section 用上图来解释很恰当,其实就是对于elf文件中一部分相同内容的不同描述映射而已
    • 发布于2019-01-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 实际都是一样的,根据不同的文件内容和关键来进行不同的识别和操作
    • 发布于2019-02-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 里面都是用不同的节点来修饰的,通过指定位置的关键字处理
    • 发布于2019-02-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是用的相对节点的方式处理,进行识别
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

嵌入式系统编程中,C程序中Section和Segment?