特定のプロジェクトで、次のコンパイラ オプションが一度に使用されるのを見ました。
gcc foo.c -o foo.o -Icomponent1/subcomponent1 -Icomponent2/subcomponent1 -Wall -fPIC -s
-fPIC
ここで と を一緒に-s
使用することは矛盾していますか? そうでない場合、なぜですか?
-s
と-fPIC
は、異なる目的で使用される 2 つのフラグです。それらは矛盾していません。
gccマニュアルより
-s すべてのシンボル テーブルと再配置情報を実行可能ファイルから削除します。
-fPIC ターゲット マシンでサポートされている場合、動的リンクに適した位置に依存しないコードを生成し、グローバル オフセット テーブルのサイズ制限を回避します。このオプションは、m68k、PowerPC、および SPARC で違いを生みます。