libA.so と libB.so という 2 つの共有ライブラリにリンクする autotools アプリケーションを構築しています。どちらも、共有ライブラリと静的 (はい、静的推奨に反して) ライブラリで構成されています。スタティック ライブラリ libmetis は、libA と libB の両方に含まれていますが、残念ながらバージョンが異なります。
libA.soにはlibA1.so、libA2.so .... libmetis5.aがあるとします
libB.so に libB1.so、libB2.so.... libmetis4.a があるとします。
Ubuntu を実行しているマシン 1 では、最終的なアプリケーションのリンク行は次のようになります。
libtool mode=link application.c -lA -lB -o application
CentOS を実行しているマシン 2 では、最終的なアプリケーションのリンク行は次のようになります。
libtool mode=link application.c -lA -lA1 -lA2... -lmetis5 -lB -lB1 -lB2... -lmetis4 -o application
libA と libB の両方がマシン 2 の構成ライブラリから再リンクされているため、libA と libB の両方が同じバージョンの libmetis を持つことになり、アプリケーションがクラッシュします。
どうすれば制御できますか、または Libtool が既に有効なライブラリを再リンクすることを禁止する設定はどこにありますか? アプリケーションのみにautotoolsを使用せず、手動でリンク行を提供しようとしましたが、動作は同じです。
ご協力いただきありがとうございます、
エラン