ビットコンテキスト。ソースファイルがあり、静的ライブラリに保存する必要があるとします。2つのcppファイルがa.cpp
ありa.cpp
、2つの異なるサブディレクトリにあるとします。このようなもの:
foo/a.h
foo/a.cpp
bar/a.h
bar/a.cpp
それらの内容は衝突しておらず、完全に異なります。ファイル名はまったく同じです。
さて、コンパイルするとa.o
、もちろん2つのファイルになります。
gcc -c foo/a.cpp -o foo/a.o
gcc -c bar/a.cpp -o bar/a.o
今静的ライブラリを作成すると
ar rcs libfoobar.a foo/a.o bar/a.o
を実行している静的ライブラリ内の両方のファイルを見ることができますnm libfoobar.a
。うまくいくようです。
問題
私が見ることができる問題は、ar
コマンドを個別に実行しfoo/a.o
、bar/a.o
それらを同じ静的ライブラリに配置するかどうかです。これで、後者のオブジェクトファイルが前者を上書きするため、実行するnm libfoobar.a
と、ライブラリに後者のオブジェクトが表示されます。同じオブジェクトファイル名が原因だと思います。
を使用して静的ライブラリを作成する場合、ar
常にすべてのオブジェクトを一度に組み合わせる必要がありますか、それともar
、オブジェクトの一部を一度に収集して複数回実行しても、すべて同じ静的ライブラリになりますか?この例では、前者の作品を見ることができますが、後者は見ることができません。
a.cpp
1つが変更され、静的ライブラリを変更する必要がある場合、どのように機能しますか?図書館で変更ar
する権利を見つけますか?a.cpp
これはほんの小さな例ですが、多くのファイルがあり、いくつかは同じ名前の大きなプロジェクトを考えてみてください。ここで単一のライブラリを作成したい場合は、このような状況になる可能性もあります。
一般に、これはライブラリの構成方法、ファイルの名前付け方法、または物事を機能させるためにこれに何か他のものがあるかについての不十分な編成ですか?