このコマンドがあるとしましょう:
g++ main.o somefile.o -lc -o main
オブジェクトファイル somefile.o のリンクとライブラリ libc.a のリンクの違いは何ですか?
「.a」で終わるファイルはアーカイブ ファイルです。基本的に、一連の「.o」が含まれています。したがって、「libc.a」に「c1.o」、「c2.o」、および「c3.o」が含まれていると仮定すると、コマンドは基本的に「libc.a」のアーカイブを解除してから次のコマンドを実行することと同じです。
g++ main.o somefile.o c1.o c2.o c3.o -o main
「.a」に含まれるオブジェクトは、必要な場合、つまり、それらのシンボルの少なくとも 1 つが別の「.o」によって参照されている場合にのみ含まれることに注意してください。