つまり、この質問は基本的に.so
、実行可能ファイルの開発バージョンをdevディレクトリにロードし、インストールされた.so
ファイルを他のファイルにロードするようにLinuxに指示することに関するものです。
長い間:共有ライブラリを想像してみてください。それを呼びましょうlibasdf.so
。そして、次のディレクトリを想像してみてください。
/home/user/asdf/lib: libasdf.so
/home/user/asdf/test: ... perform_test
/opt/asdf/lib: libasdf.so
/home/user/jkl: ... use_asdf
つまり、ライブラリの開発ディレクトリ(/home/user/asdf
)があり、以前の安定バージョン(/opt/asdf
)とそれを使用する他のプログラム()のコピーがインストールされています/home/user/jkl
。
私の質問は、Linuxに、/home/user/asdf/lib/libasdf.so
実行時/home/user/asdf/test/perform_test
にロードし、/opt/asdf/lib/libasdf.so
実行時にロードするように指示するにはどうすればよい/home/user/jkl/use_asdf
ですか?リンク中にディレクトリを指定しても-L
、Linuxは他の方法(たとえば/ect/ld.so.conf
、および$LD_LIBRARY_PATH
)を使用して.so
ファイルを検索することに注意してください。
私がそのようなものを必要とする理由は、もちろん、開発ディレクトリ内の実行可能ファイルはライブラリの最新バージョンとリンクする必要がありますが、他のプログラムは安定バージョンを使用したいからです。
別../lib
のディレクトリからテストを実行することはできないため、ライブラリパスを配置することは、完全に正しくないことは言うまでもなく、安全なアイデアのようには思えません。
私が考えた解決策の1つは、インストール時にperform_test
リンクを設定し、名前を付けてlibasdf-dev.so
コピーlibasdf-dev.so
しlibasdf.so
、他のユーザーにリンクさせることです。ただし、このソリューションには1つの問題があります。次の追加ディレクトリを想像してみてください。
/home/user/asdf/tool: ... use_asdf_too
どちらにインストールされますか:
/opt/asdf/bin: use_asdf_too
use_asdf_too
私の解決策では、何に対してリンクする必要があるのかは不明です。に対してリンクさlibasdf.so
れている場合、devディレクトリから呼び出された場合は正しく機能せlibasdf-dev.so
ず、に対してリンクされている場合は、インストールされた場所から呼び出された場合は正しく機能しません。
私に何ができる?これは他の人によってどのように管理されていますか?