Соединение с GCC не обнаруживает флаг -fPIC - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь связать некоторые файлы. Вот моя команда:

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 голосов
/ 13 ноября 2018

Вы передаете -fPIC вашей команде linkage .Это опция compiler , потому что вам нужно скомпилировать ваш исходный код в объектно-независимые объектные файлы.

Удалите его из этой команды и добавьте в свои команды компиляции.

(-O2 также является компилятором, а не компоновщиком, опция.)

...