0

我正在尝试链接一些文件。这是我的命令:

gcc -T linker.ld -o Stack\ Berry.bin -ffreestanding -O2 -nostlib kernel.o boot.o -fPIC -lgcc

但是,我收到此错误:

/usr/bin/ld: boot.o: relocation R_X86_64_32 against `.multiboot' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output

我已经包含了-fPIC论点,我只是把它放在错误的地方吗?我试过把论点放在它编译的地方,但没有运气。我找不到任何关于这个标志的语法的东西。谢谢!

4

1 回答 1

1

您正在传递-fPIC给您的链接命令。这是一个编译器选项,因为您需要将源代码编译为与位置无关的目标文件。

从此命令中删除它并将其添加到您的编译命令中。

-O2同样是编译器,而不是链接器,选项。)

于 2018-11-13T16:36:09.033 回答