2016-11-23 3 views

ответ

3

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

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

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

+0

так что '-fPIC' требует перемещения по коду загрузчика? –

+0

@MarkYisri Да, это ссылка на документацию GCC выше, и я также упоминаю ее сейчас. – unwind

+0

в порядке, так есть способ быть независимым от положения и не нуждаться в коде переселения. «Потому что я хочу сделать это на не-MMU-плате и запускать приложения отдельно от моего самодельного ядра. –