作業中のプロジェクトのmakefileをまとめています。プロジェクトに実行可能ファイルと共有ライブラリがあります。どちらも、オブジェクトファイルに個別にコンパイルされる同じソースファイルのいくつかを使用します。共有ライブラリでこれらのオブジェクトを使用できるようにするには、gccで-fPIC(位置独立コード)フラグを使用する必要があります。実行可能ファイルで使用される-fPICを使用してオブジェクトをコンパイルすることの意味はありますか?
2101 次
1 に答える
9
一部のプラットフォームでは、位置に依存しないコードをコンパイルするとパフォーマンスが低下します(特に、PICが非PICの場合により自由に使用できるレジスタを削除するため、レジスタが不足しているx86アーキテクチャ)が、有害なことはありません。そうでなければ効果。
さらに、-fPIE
位置に依存しないコードのみから構築された位置に依存しない実行可能ファイル()を作成することも可能です。
そうは言っても、libtoolは、コンパイルするソースファイルごとにPICオブジェクトと非PICオブジェクトの両方を自動的に生成でき、libtoolが統合されていないビルドシステムでも同じことを簡単に実行できるはずです。
于 2009-07-22T20:38:54.777 に答える