GNU链接脚本详解

供稿:hz-xin.com     日期:2025-01-15
链接脚本概述

链接脚本是链接过程中的关键组件,用链接命令语言编写,用于指导链接器将目标文件链接成可执行文件或动态库。链接器默认使用一个链接脚本,如需自定义,可通过命令行参数`--verbose`查看默认脚本内容,或使用`-T 自定义脚本名`指定自定义脚本。

链接脚本的基本概念与使用

链接脚本是一个文本文件,命令间用`;`分隔,忽略空格。文件名若包含特殊字符需加双引号。与C语言类似,可使用`/**/`进行注释。

简单的链接脚本示例

通过`SECTIONS`命令描述目标文件内存布局。例如,将`text`节从0x10000开始存放,`data`节从0x8000000开始存放。链接时,`text`节的输出与输入一一对应,依此类推。

入口地址指定

入口地址可通过命令行、链接脚本或特殊目标符号指定,或默认为第一个`.text`节的起始地址或0地址。

文件处理命令

链接脚本包含命令如`INCLUDE`、`INPUT`、`GROUP`、`AS_NEEDED`、`OUTPUT`等,用于管理输入文件,设置输出文件格式、搜索路径、链接行为等。

输出文件格式控制

`OUTPUT_FORMAT`和`TARGET`命令分别用于设置输出文件格式和链接器读取输入文件使用的格式。

内存区域别名`REGION_ALIAS`用于快速调整输出节映射。

断言`ASSERT`用于链接过程中的验证。

符号赋值

链接脚本中可使用类似C语言的赋值方式,或通过`HIDDEN`、`PROVIDE`、`PROVIDE_HIDDEN`等命令控制符号输出和可见性。

SECTIONS命令详解

SECTIONS命令是链接脚本的核心,定义输出节的名称、地址、类型、对齐、限制条件、内存区域等,指导链接器如何组织目标文件。

输入节描述

输入节描述如何在输出节中放置输入节,包括文件名、节名、类型、对齐方式,以及特殊输出节关键字,如`BYTE`、`FILL`等。

如何让libtool不链接生成脚本文件
metacharacters that are still active within double-quoted strings.查automake在线文档htt p:\/ \/ww w.g nu.o rg\/software\/automake\/manual\/libto ol.h tml#Link-mode发现:-no-install Link an executable output-file that can't be installed and therefore doesn't need a wrapper script on ...

另类的MSBuild并行加速生成技巧
尽管如此,MSBuild的强大功能,如NuGet,依然让人难以割舍。尽管并行编译的缺失是个痛点,但我们可以通过巧妙的方式弥补。这里分享一种策略:使用Dism++进行并行编译的改造。在改造前,Dism++的编译时间是00:00:32.54,脚本遵循串行编译模式。经过改造,我们引入了新的脚本,增加了对CompiledOnlyProperties的...

将C#脚本(CSharp Scripting)运用于Unity
为了解决安装问题,我采用nuget下载所需库,并将其放入Unity的Plugins文件夹中。为了方便大家获取相关库,我整理了一份下载链接,包含所有在Win11上正常运行所需的核心库。安装流程如下:首先在Assets文件夹下创建Plugins文件夹,随后在x86_64文件夹下放置库文件。根据项目需求选择对应平台的文件夹。下载库后...

请教linux下shell 中 set 的用法
当BASH shell被调用时,可以列出全部的选项.当前的选项集列在$-中.在option参数被处理后,其他的参数被赋值到位置参数中(,,...,$n)格式 set [--abefhkmnptuvxldCHP] [-o option name] [arguments ...]详解:选项 说明 -a 自动向已经修改的变量或为导出后序命令的变量作出标志 -b 不是在原提...

如何利用python使用libsvm
一:libsvm包下载与使用:LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进.把包解压在C盘之中,如:C:\\libsvm-3.18 2.因为要用libsvm自带的脚本...

文件的扩展名一共有多少种?
CSC Corel脚本文件 CSP PC Emcee On_Screen图像 CSS 瀑布式表格文件 CST Macromedia Director Cast文件 CSV 逗号分隔的值文件 CT Scitex CT位图文件;Paint Shop Pro Grapic编辑器文件 CTL 通常用于表示一个包含控件信息的文件;FaxWork用它来保持有关每个传真收到或发出的信息 CUE Microsoft提示牌数据文件 CUR ...