Соединение с 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 ответ

Решение

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

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

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

Другие вопросы по тегам