与 GCC 链接未检测到 -fPIC 标志
Linking with GCC doesn't detect -fPIC flag
我正在尝试 link 一些文件。这是我的命令:
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
参数,我只是把它放在了错误的地方吗?我试过将参数放在它编译的地方但没有运气。我一直没能找到关于这个标志语法的任何东西。谢谢!
您正在将 -fPIC
传递给您的 linkage 命令。这是一个编译器选项,
因为您需要编译您的源代码以生成与位置无关的目标文件。
将其从此命令中删除并将其添加到您的编译命令中。
(-O2
同样是一个编译器,而不是链接器,选项。)
我正在尝试 link 一些文件。这是我的命令:
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
参数,我只是把它放在了错误的地方吗?我试过将参数放在它编译的地方但没有运气。我一直没能找到关于这个标志语法的任何东西。谢谢!
您正在将 -fPIC
传递给您的 linkage 命令。这是一个编译器选项,
因为您需要编译您的源代码以生成与位置无关的目标文件。
将其从此命令中删除并将其添加到您的编译命令中。
(-O2
同样是一个编译器,而不是链接器,选项。)