链接脚本的作用及格式

您所在的位置:网站首页 地址符号是什么符号 链接脚本的作用及格式

链接脚本的作用及格式

2024-06-12 18:52| 来源: 网络整理| 查看: 265

当 FILENAME 是一个特定的文件名时,链接器会查看它是否在链接命令行内出现或在 INPUT 命令中出现。 当 FILENAME 是一个字符串模式时,链接器仅仅查看它是否在链接命令内出现。

注意:如果链接器发现某文件在 INPUT 命令内出现,那么它会在 -L 指定的路径内搜索该文件。

字符串模式内可以存在以下通配符1(4.6.4.2. Input Section Wildcard Patterns):

*: 表示任意多个字符 ?: 表示任意一个字符 [CHARS]: 表示任意一个 CHARS 内的字符,可用 - 号表示范围,如 [a-z] \: 表示引用下一个紧跟的字符

在文件名内,通配符不匹配文件夹分隔符 / ,但当字符串模式仅包含 * 时除外。 任何一个文件的任意 section 只能在 SECTIONS 命令内出现一次。例如:

1SECTIONS { .data : { *(.data) } .data1 : { data.o(.data) } }

data.o 文件的 .data section 在第一个 OUTPUT-SECTION-COMMAND 命令内被使用了,那么在第二个 命令内将不会再被使用,也就是说即使链接器不报错,输出文件的 .data1 section 的内容也是空的。

注意:链接器依次扫描每个 OUTPUT-SECTION-COMMAND 命令内的文件名,任何一个文件的任何一个 section 都只能使用一次。

读者可以和 -M 连接命令选项来产生一个 map 文件,它包含了所有输入 section 到输出 section 的组合信息。

再看一个例子:

1SECTIONS { .text : { *(.text) } .DATA : { [A-Z]*(.data) } .data : { *(.data) } .bss : { *(.bss) } }

这个例子中,所有文件的输入 .text section 组成输出 .text section;所有以大写字母开头的文件的 .data section 组成输出 .DATA section,其他文件的 .data section 组成输出 .data section; 所有文件的输入 .bss section 组成输出 .bss section。

可以用 SORT() 关键字对满足字符串模式的所有名字进行递增排序,如 SORT(.text*)。

通用符号(common symbol)的输入 section: 在许多目标文件格式中,通用符号并没有占用一个 section。链接器认为:输入文件的所有通用符号在名为 COMMON 的 section 内。

例子:

1.bss { *(.bss) *(COMMON) }

这个例子中将所有输入文件的所有通用符号放入输出 .bss section 内。可以看到 COMMON section 的使用方法跟其他 section 的使用方法是一样的。有些目标文件格式把通用符号分成几类。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3