2016-04-30 6 views
1

、私はコンパイル時に余分なリンクやライブラリが実行可能ファイルの出力に与える影響を教えてください。例えば

-lGL -lm -lglfw3 
と連結した場合のように

-L/usr/X11R6/lib -L/usr/local/lib -lGL -lGLU -lm -lglut -lGLEW -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXcursor -lXinerama 

出力実行ちょうど同様にコンパイル(および知覚可能ちょうど同様に機能)を持つオブジェクト「example.o」をリンクした場合

元のコンパイルの過度のリンケージは、エンドユーザーの実行可能ファイルに影響します(ある場合)。ロード/ランタイム?より大きいプログラム( "example.o"はかなり小さいと理解する)の場合は?

この質問は、正直なところ私の啓発のためかもしれません。

+1

明らかにリンカーに依存していますが、余分なライブラリにはほとんど影響がないと思います。すべてのシンボルを検索するのに時間がかかるため、リンク時間はわずかに増加しますが、余分なシンボルが使用されず、リンカーの価値がある場合は、実行可能なサイズとランタイムには全く影響がありません。 –

答えて

1

コンパイラドライバがデフォルトでリンカに "--as-needed"オプションを渡している場合、リンカが不要なライブラリ依存関係を削除するため、結果のバイナリに違いはありません。

この記事に関する広範な記事としてのDebian wiki:Debian DSO Linking

+0

ありがとうございました!私はすぐに記事を読んでいます。 – zzz

関連する問題