В чем разница между кодом PIC и `ld -r`?

Я знаю, что оба они используются для создания кода, который можно разместить в разных местах, но как каждый из них работает и почему?

1 ответ

Решение

Для начала, они являются опциями для различных частей цепочки инструментов:

  • -fpic а также -fPIC являются опциями GCC, которые генерируют независимый от позиции код. Это влияет на действительные выбранные инструкции, чтобы код выполнялся независимо от того, где он находится в памяти. Это требует поддержки со стороны динамического загрузчика операционной системы, чтобы фактически сделать его работоспособным после загрузки.
  • -r это опция компоновщика, которая заставляет его испускать перемещаемый код, то есть код, который может быть снова связан позже. Это часть поддержки ld для добавочных ссылок.

Я думаю, что их использование не пересекается, вы можете создавать перемещаемый (библиотечный) код без использования ld -r,

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