2017-01-04 11 views
2

Проблема заключается в следующем. Когда я пишу: gcc print.s на моем Kali Linux терминал я получаю следующее сообщение об ошибке:gcc on Kali Linux

/usr/bin/ld: /tmp/cc45uyZj.o: relocation R_X86_64_32S against `.data' can not be used when making a shared object; recompile with -fPIC 
/usr/bin/ld: final link failed: Nonrepresentable section on output 
collect2: error: ld returned 1 exit status 
  1. Я попробовал то же самое в другой дистрибутив, и она работала отлично.

  2. Добавление -fPIC не помогает. Также не обновляется apt-get.

  3. , если вы хотите увидеть код: https://github.com/NEGU93/Compilation.git внутри Практики> Part1. Конечно, файл print.s (кстати, все файлы .s имеют похожие ошибки, когда я делаю gcc).

Я думаю, что что-то отсутствует в дистрибутиве Кали, но я не знаю, что это может быть.

ответ

3

Похоже, что ваш дистрибутив позволяет по умолчанию -pie (проверьте вывод gcc -v), но ваша сборка не зависит от положения. Попробуйте скомпилировать пример файла .c в разделе -fPIC и посмотреть, как он генерирует вызовы. В вашем случае это должно быть

call [email protected] 

или вы можете попробовать скомпилировать с gcc -no-pie.

+0

Решенный с этим! Я добавил строку «-no-pie» и работал! Большое спасибо! Есть ли способ сделать это постоянным? не нужно писать эту строку каждый раз? –

+0

К сожалению, он по умолчанию включен для всех современных дистрибутивов. '-no-pie' в порядке, просто бросьте его в свои' CFLAGS'. – yugr

 Смежные вопросы

  • Нет связанных вопросов^_^