与GCC链接未检测到-fPIC标志

时间:2018-11-13 14:31:06

标签: ld fpic multiboot

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

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参数,是否只是将其放在错误的位置?我尝试将参数放在可以编译的位置,但是没有运气。我无法找到该标志语法的任何内容。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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