我想为某些部分指定对齐方式。对于ld 2.20.0
以下方法有效:
创建一个仅包含应该对齐的部分的链接描述文件,例如:
SECTIONS { .data ALIGN(0x40): { *(.data) } .text ALIGN(0x40): { *(.text) } .plt ALIGN(0x10): { *(.plt) } }
然后链接:
-rpath-link=/path/to/LinkerScript.ld /path/to/LinkerScript.ld
例如,将脚本包含在 rpath-link 中,并将其作为目标文件之一传递。
现在,当使用相同的方式链接时gold 2.23.1
,脚本被拒绝并出现以下错误:
LinkerScript.ld: SECTIONS seen after other input files; try -T/--script
所以黄金希望我指定一个完整的链接器脚本,但我只想更改几个属性。这可能吗?
我已经尝试过:
- 使用选项传递脚本
-T
。这会产生一个无法启动的损坏的可执行文件。据我了解,这是因为-T
只接受完整的链接器脚本,而以上只是对现有脚本的“注释”。 - 同样,当将带有
-T
选项的脚本传递给ld 2.20.0
它时,由于某些部分未指定,因此无法链接。对于我的用例,它不是一个“完整的”链接器脚本。 - 所以我尝试获取完整的链接器脚本。
ld --verbose
将打印默认链接描述文件。我不得不删除几个不理解的符号gold
,之后使用该-T/path/to/LinkerScript.ld
选项生成的可执行文件不再起作用。 - 不幸
gold
的是,没有显示其默认链接器脚本的选项(它不使用任何链接器脚本)。 - 手册页没有指定如何使用参数更改上述情况的对齐方式。
任何帮助将不胜感激!