2016-03-31 3 views
3

libreadline.soをロードしようとしています。 "libreadline.so.6"のようにバージョン番号を明示的に指定すると、私のコードは正常に動作しますが、単に "libreadline.so"を与えるだけで失敗します。おそらく、私が直接与えるファイル名を開こうとしています。新しいバージョンが現れたときに将来の失敗を避けるために、dlopenをループで呼び出し、バージョン番号を0にカウントダウンします。これは動作し、常にlibreadlineの最新バージョンを取得します。未知のバージョンのライブラリをdlopenする方法

私の質問は、これを行う正しい、またはより良い方法がありますか?

私はlibreadline.so.6がlibreadline.so.6.3へのリンクであることを知っています。彼らはlibreadline.soから最新バージョンへのリンクを持っていません。

+0

バージョン番号を構成ファイルに入れて、適切なバージョンをフェッチすることはどうでしょうか。 – sigmalha

+0

おそらく2つのステップでリンクをたどります.libreadline.soはおそらく実際のライブラリバイナリにリンクするlibreadline.so.6にリンクしています。 –

+0

設定ファイルのバージョン番号:はい、もちろん動作します。バージョンが変更され、設定ファイルが変更されていない場合は、ループに頼ります。ライブラリが更新されたときに、無関係のアプリケーション用にファイルを編集する必要はありません。私の直感は、これを行うための「適切な」方法があるということです! – Jeremy

答えて

0

すべての異なるファイルを含むディレクトリを開き、すべてのファイルの拡張子を比較するとどうなりますか?

関連する問題