如何使用自定义链接描述文件编译ld?

时间:2013-11-12 14:32:23

标签: linux linker ld linker-scripts linux-from-scratch

我正在尝试构建Linux内核3.8的自定义版本,我希望我的链接器行为有点不同,所以我改变了它的ldscripts。 具体来说,我配置binutils - >制作 - > 更改ldscripts - > make install 。 但是,当我尝试使用我的链接器编译libc时,我唯一看到的是:

GNU ld (GNU Binutils) 2.23
  Supported emulations:
   elf32_sparc
   sparclinux
   elf64_sparc
   sun4
using internal linker script:
==================================================
/* Script for --shared -z combreloc: shared library, combine & sort relocs */

问题是我已经更改了我的ldscripts并在每个脚本的开头添加了一个标记以便识别它们,但我的编译器似乎并不关心。 但是我的系统中没有任何其他 elf 脚本,因此搜索错误的库路径的选项实际上不是一个选项。

我在这里缺少什么吗?

请注意,我正在为sparc

进行交叉编译

2 个答案:

答案 0 :(得分:0)

默认ld脚本被编译到编译器驱动程序(gcc)中,因此您至少应该重建工具链。

这也可能是gcc不会查看除内置之外的任何链接描述文件的情况,因此您必须在工具链中修改它们(它可能是在某些地方的spec文件中。

答案 1 :(得分:0)

您可以将自定义链接描述文件传递给ld

ld -T <path/to/file> ...

或到gcc

gcc -Wl,-T,<path/tofile> ...