我正在使用binutils-2.24中的 Gold链接器来链接目标应用程序:i686-pc-linux-gnu。
当我在i686-pc-linux-gnu机器上运行Gold时出现虚拟内存错误,所以我在x86_64-linux-gnu主机上构建它(以获得更多虚拟内存),我就是在这台机器上运行它,但是我用它来链接我的目标应用程序:i686-pc-linux-gnu。
第一个链接成功 - 我还没有可执行文件 - 所以Gold恢复到--incremental-full,我得到一个可运行的可执行文件,我可以在我的i686-pc-linux-gnu机器上成功运行:< / p>
gold-ld -o stam32 -dynamic-linker /lib/ld-linux.so.2 -L / usr / lib32 /usr/lib32/crti.o /usr/lib32/crtn.o / usr / lib32 / crt1.o main.o try.o -lc --incremental
* stam32:stat:没有这样的文件或目录 链接--incremental-full *
第二个链接失败,出现以下错误:
../ objs-binutils-2.24 / gold / ld -o stam32 -dynamic-linker /lib/ld-linux.so.2 -L / usr / lib32 /usr/lib32/crti.o / usr / lib32 /crtn.o /usr/lib32/crt1.o main.o try.o -lc --incremental
../ objs-binutils-2.24 / gold / ld:init_got_plt_for_update中的内部错误,位于../../ binutils-2.24 / gold / target.h:949
我查看了源代码,发现“init_got_plt_for_update”仅适用于 x86_64和tilegx。对于其他目标,init_got_plt_for_update只需调用gold_unreachable(),它会以错误退出黄金。
另一方面 - 有一个关于Gold的增量链接(https://video.linux.com/videos/incremental-linking-with-gold)的整个讲座,并且在那里特别提到i386,作为Gold支持的目标,并且发言者没有提及关于使用的任何限制 - i386目标的增量标志(据我所知i686-pc-linux-gnu是i386目标)。
所以有人知道为什么我的增量链接会失败吗?
提前致谢, Galit Keret
答案 0 :(得分:0)
在binutils邮件列表中询问并回答:
目前还没有针对黄金i386目标的增量链接支持。