Соединение с 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
это также компилятор, а не компоновщик, вариант.)