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

を含む elf セクションがboot.oあります。コンパイルしようとしても失敗します。.multiboot-fPICboot.o-fPIC

バラよりhttps://www.gnu.org/software/grub/manual/multiboot/multiboot.html#OS-image-formatタイトルのため。

一方、起動可能なオブジェクトを作成するために-fPIC。 「ダイナミックローダ」を使用しても、起動中はダイナミック接続ができません。

関連情報