つまり、この質問は基本的に.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ず、に対してリンクされている場合は、インストールされた場所から呼び出された場合は正しく機能しません。
私に何ができる?これは他の人によってどのように管理されていますか?