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

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

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

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

boot.o有一个.multibootelf 部分,与-fPIC.您可以尝试编译boot.o-fPIC但应该会失败。

https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#OS-image-format对于标题。

另一方面,使用 . 创建可启动对象没有什么意义-fPIC。即使有“动态加载器”,在引导过程中也不可能有任何动态链接。

相关内容