アプリケーションで libA.a が必要だとします。libA.a には libB.a 自体が必要であり、アプリケーションで両方に静的にリンクする必要があります。これを解消するために、これら 2 つ (libA.a と libB.a) をマージして libAB.a を作成します (これは ar ツールを使用して行います)。まだ問題はありません。
アプリケーション (libAB.a にリンクされている) を実行したい場合、コンパイラは、libB を使用している libA 内のメソッドへの未定義の参照について不平を言い始めます! アプリを libAB.a に加えて libBa.a にリンクすると、すべて問題ありません。ファイル サイズによると、libAB.a は libA と libB のマージの結果のようですが、コンパイル時には libA のみがアプリケーションで使用できるようです。
マージコマンドは次のとおりです。
ar rcus -v ../lib/libPocoFoundationmtd.a @"Foundation.txt" "c:/MinGW/lib/libiphlpapi.a"
Foundation.txt には、.a ファイルを作成する .o ファイルのリストが含まれています。そして、これが私のアプリケーションのコンパイルコマンドです:
g++ -o ./Debug/exe1 @"exe1.txt" -L. -Lc:/poco/lib/ -lPocoFoundationmtd