静的ライブラリに対して静的にリンクする共有オブジェクトをコンパイルする際に、多くの問題が発生しました。この問題は、x84_64 プラットフォームでのみ発生します。x86_32 で同じコンパイル作業を行う場合、問題はありません。
おそらくこれは OS 固有の GCC 構成の問題ですが、私の調査では、GCC が x86_64 プラットフォームでどのように機能するかが示されています。とにかく、Ubuntu 10.04 x86_64 で gcc 4.4.3 を使用しています。
問題はどのように修正されますか?... すべての静的ライブラリの依存関係が -fPIC でコンパイルされていることを確認します。
質問 1: -fpic と -fPIC の違いは何ですか (明らかに -fPIC は x86 でより多くの命令を生成します)。x86_64 コンテキストでは、後のタイプの方が関連性が高いのはなぜですか?
質問 2:私の仮定では、静的コードに対してリンクする場合、リンク時に関数をバイナリに配線しているのに、「位置に依存しないコード」機構が提供する間接的なレベルが必要なのはなぜですか?
質問 3:共有オブジェクトを静的アーカイブにリンクするために x86 が -fpic / -fPIC を必要としない場合、なぜ x86_64 で必要なのですか?
質問 4:必要な場合でも、暗黙的に提供されないのはなぜですか? 重大な変更は絶対にダメだと思っていた