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