Почему gcc неявно не предоставляет флаг-fPIC при компиляции статических библиотек по x86_64

У меня были многочисленные проблемы при компиляции общих объектов, которые связываются статически против статических библиотек. Эта проблема только обнаруживается на x84_64 платформах. Когда выполнение той же компиляции работает над x86_32, у меня нет проблем.

Возможно, это - ОС определенная вещь конфигурации GCC, но мое исследование указывает, что, как GCC работает над x86_64 платформами. Во всяком случае я использую gcc 4.4.3 на Ubuntu 10.04 x86_64.

Как проблема решена?... Удостоверяясь все статические зависимости библиотеки компилируются с-fPIC.

Вопрос 1: Каково различие между-fpic, и-fPIC (по-видимому-fPIC генерирует больше инструкций относительно x86)? Почему более поздний тип более релевантен в x86_64 контексте?

Вопрос 2: Мое предположение - то, что, когда Вы связываетесь против статического кода, Вы соединяете функции проводами в свой двоичный файл во время ссылки, почему ему нужен уровень абстракции "положение, которое обеспечивает независимый код" оборудование?

Вопрос 3: Теперь, если x86 не нужен-fpic/-fPIC для соединения общих объектов против статических архивов, почему он необходим в x86_64?

Вопрос 4: даже если необходимо, почему это не предоставлено неявно? Я думал, повреждая изменения, как, предполагалось, был большим нет - нет

59
задан Hassan Syed 18 October 2010 в 17:00
поделиться