У меня было множество проблем с компиляцией общих объектов, которые статически ставят статические библиотеки. Эта проблема возникает только на платформах 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:, даже если это необходимо, почему он не предоставляется неявно? Я думал, что нарушение изменений должно было быть большим, не-no