大規模なアプリケーションでライブラリの競合を見つけるための最良の方法は何ですか?

大規模なアプリケーションでライブラリの競合を見つけるための最良の方法は何ですか?

Boost、Qt、zlib、libpngなどへの依存関係が多い大規模アプリケーション(Pと呼びます)があります。最近、私は新しい共有オブジェクトを動的にロードする必要がある機能をPに追加しましたlib1.solib1.soMATLAB APIによって異なります。したがって、Pがすでに依存している多くのライブラリに依存することになります。

問題は、lib1.soP内で(Qt 5.12のQLibraryクラスを使用して)動的にロードしようとすると、ロードが失敗することです。失敗メッセージは、Matlab共有オブジェクトが見つからないことです。ただし、共有オブジェクトはすでに存在し、そのパスはLD_LIBRARY_PATHにあります。

lib1.so同じLD_LIBRARY_PATH値を使用して単純なアプリケーションをロードしようとすると、正常に動作します。

私の意見では、Pはロード時に共有オブジェクトをロードし、lib1.so同じライブラリ(しかし異なるバージョン)は動的ロード時にロードされることを望み、この競合はlib1.soP内にロードすることは許可されていません。

strace私はPでコマンドを試しましたが、lib1.so動的にロードされるのであまり役に立ちませんでした。

このエラーを引き起こす公共図書館を見つけるための最良の方法は何ですか?

ベストアンサー1

おすすめ記事