[英]How to compile ld with custom linker scripts?
我正在尝试构建 linux 内核 3.8 的自定义版本,并且我希望我的链接器的行为有所不同,因此我更改了它的 ldscripts。 具体来说,我配置 binutils -> make -> change 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 进行交叉编译
默认ld
脚本被编译到编译器驱动程序 ( gcc
) 中,因此您至少应该重建工具链。
这也可能是gcc
不会查看除内置之外的任何链接器脚本的情况,因此您必须在工具链中修改它们(它可能在某处的规范文件中)。
您可以将自定义链接器脚本传递给ld
:
ld -T <path/to/file> ...
或gcc
:
gcc -Wl,-T,<path/tofile> ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.