• GNU LD之二LD script


    前言

    目前正在从头开发一个MIPS的嵌入式项目,有机会从零开始写ld脚本,于是趁机把GNU LD的官方文档读了一遍。

    链接如下:http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html

    该文档分为几个章节,为了便于介绍,我在这里也按照文章的阅读顺序,分别把读后感记录在这里。

    ld俗称链接器,就是吃进去object files,输出可执行文件。而可执行文件是可以下载到存储器让CPU取指令运行的文件格式。

    ld吃下各个object files,并将其消化,最后转换为生命所需的营养(可执行文件),或者shit(错误)。

    消化的过程,主要是分析object files里面的符号,例如全局变量,静态变量,函数名等,根据符号的调用关系,以及ld脚本的安排,将符号安排在内存合适的位置。

    关于全局变量,静态变量,局部变量,函数,这些分别放在text段,data段,还是堆栈的知识,我就不讲了,有C语言编程经验的人应该都知道,不清楚的可以翻K&R的书。

    目标文件在其存储器映像文件中的布局

    首先我们来看一本书,《MIPS体系结构透视》,在其9.5小节“目标文件在其存储器映像文件中的布局”中,描述了可执行文件中的各个段是如何在存储器映像中布局的。在这一节中有一张图如下所示,可以显示出各个段在内存的存储器中的布局。所以我们在ld脚本中也要按照这个顺序来定义各个段。

     

    至于其中每个段的含义,可以参考这本书的这一节啰。这里挑出一点,就是.sbss,还有.bss这两个的区别,以及.sdata,待续。。。

  • 相关阅读:
    如何使用Eclipse和GCC搭建STM32环境
    增量式pid和位置式PID参数整定过程对比
    webrtc 源码结构
    小米路由器刷Xiaomi Mi WiFi Mini openwrt
    js jQuery 右键菜单 清屏
    沉默的大多数 (王小波)
    kindle书摘-活着-余华-活着不易,珍惜
    kindle书摘-围城-相爱勿相伤
    Nagios系列1,选择
    红楼梦人物关系图,一代大师成绝响,下回分解待何人,kindle读书摘要
  • 原文地址:https://www.cnblogs.com/ironx/p/4954845.html
Copyright © 2020-2023  润新知