問題タブ [rpath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - pkg-config: -rpath を設定するためのベストプラクティス?
出力に基づいて-rpath
libtoolを設定するベスト プラクティスはありますか? トリックに頼る必要がありますか?-R
pkg-config
sed
macos - OS X での Rust とローダーのパス (@rpath、@loader_path)
Rust を使用した外部ライブラリの読み込みに関する問題を解決しようとしています。
入力:
実行可能ファイルrtest
と dylibがありlibcpp2rs.dylib
ます。ライブラリは、FFI を介して実行可能ファイルにリンクされています。
私のbuild.rs
ファイル(libcpp2rs.dylib
場所に追加の引数を渡しています):
そして私のCargo.toml
ファイル:
そしてcargo build
、コンパイルにはコマンドを使用します。
出力:
otool
ライブラリが次のようにロードされることを示していますRPATH
:
しかし同時にLC_LPATH
、実行可能ファイルにはセクションがありません:
そして、それは私のアプリケーションを読み込みエラーに導きます:
この問題は使用法によって修正できますがinstall_name_tool
、コンパイル プロセスに追加の手順を導入しないことをお勧めします。
cargo
構成/ビルドスクリプトを使用して、ロードタイプを @rpath から @loader_path に変更することは可能ですか?- @rpath 値をに渡すことは可能
cargo
ですか?
dll - Windows でコンパイル時に .dll の絶対パスを指定できますか?
1 つの .dll (ダイナミック リンク ライブラリ) を作成しました。このライブラリを使用して、実行ファイルを作成したい。
しかし、.exe とリンクする .dll の絶対パスを提供したいと考えています。したがって、.exe を実行すると、.dll とリンクします。
PATH(環境変数)を設定したくない、.dllをシステムディレクトリまたは実行可能ファイル内の同じディレクトリに配置したくない。-rpath オプションを使用して Linux にアクセスできることを知っています。
私は窓が初めてです。ウィンドウで rpath equal オプションを見つけようとしましたが、失敗しました。
c++ - C++ 動的にリンクされたライブラリが実行可能ファイルに見つかりません
.so
パスに があり、 を指すようにビルドされた/home/test/lib/libTest.so
という実行可能ファイルがあります。しかし、私がしたとき、それは見つかりませんでした、そしてそれが機能するために私はしなければなりませんでした.myexec
RPATH
/home/test/lib/
ldd
myexec
libTest.so
export LD_LIBRARY_PATH
私は確認しました:
libTest.so
に存在します/home/test/lib/
objdump -x myexec | grep RUNPATH
/home/test/lib/
実行可能ファイルに組み込まれていることを示します。
設定せずにライブラリが見つからなかった理由を知っている人はいますLD_LIBRARY_PATH
か?
c++ - OS X で Bazel を使用して C++ の rpath を設定するにはどうすればよいですか
私は自分のBUILD
ファイルに以下を追加しようとしました:
しかし、実行可能ファイルをチェックすると
は含まれませんpath/to/add
。bazel を使用して実行可能ファイルの rpath を変更するにはどうすればよいですか。
gcc - rpath の正しい使い方 (相対 vs 絶対)
バイナリまたはライブラリをビルドするときrpath
、つまり
バイナリの実行時に必要なライブラリを見つける場所をリンカに指示します。
ここでの絶対パスと相対パスに関する UNIX の哲学は何ですか? どこからでもライブラリを見つけることができるように、絶対パスを使用する方が良いですか? または、ディレクトリ全体をコピーしたり、より高いレベルのパスの名前を変更したりしても、バイナリが使用できなくなることがないように、相対にする方がよいでしょうか?
アップデート
を使用する$ORIGIN
のが、通常、バイナリを構築するための推奨される方法です。ライブラリの場合、絶対パスを入力するのが好きです。そうしないと、ライブラリにリンクできなくなるからです。シンボリック リンクは、リンク先ではなく、リンク$ORIGIN
のパスを指すようにを変更します。
gcc - 共有ライブラリの gcc リンク: $ORIGIN による二次的な依存関係
これは、これに対するフォローアップの質問です。
$ORIGIN
オプションで使用する-rpath
と、ライブラリを使用する場所に関係なく、常に指定された場所を指す動的絶対パスが生成されることを理解しています。
私を混乱させているのは、次のことです。このライブラリを使用して共有バイナリを生成し、バイナリが常にライブラリを検索できるようにするための-Wl,-rpath
オプションを(再度) 設定します。$ORIGIN
現在、$ORIGIN
ライブラリの元の値は使用できなくなっているか、新しいライブラリによって上書きされているように見えるため、間違っています。
独自の を持つ新しい共有オブジェクト (バイナリ) を生成しているので、これはどういうわけか理解できます$ORIGIN
。これを回避する方法は、バイナリ-rpath
に両方の場所を提供することです。ライブラリへの場所とライブラリ自体が必要とする場所です。私の意見-rpath
では、ライブラリにリンクしてその場所を指定することはできず、ライブラリの依存関係の場所も指定する必要があるため、これはほとんど役に立ちません。
私の質問:-rpath
を使用して階層値を指定する方法はあります$ORIGIN
か? 明らかに私の問題を解決する絶対パスを避けたいと思います。
c++ - Qt: Mac でのリンク フレームワーク: rpath の使用
Qt でカスタム フレームワークを作成したいと考えています。フレームワーク自体を作成することはできますが、Qt を実行するとフレームワークが見つかりません。
理由は単純です。バイナリは、フレームワークを探す場所を認識していません。
バイナリで otool を使用したところ、次のようになりました。
だから、私の質問は次のとおりです(詳細については、以下のものを確認してください):qmakeにライブラリのパスを設定するように指示するにはどうすればよいですか:
qmakeでこれを行う方法はありますか? でこれを変更する方法は知っていますinstall_name_tool
が、.pro ファイルに直接追加したいと思います。
私がこれまでにやったこと:
pro ファイルを変更してバイナリの rpath に変更し、ビルド時にライブラリが配置されているパスを含めます。
このようにして、.rpath を使用せずに、リリースの rpath を簡単に変更できますinstall_name_tool
。ただし、これを機能させるには、最初の行を次のように変更する必要があります。
アプリケーションのプロファイル ファイルで、次のように指定しました。
最後の欠けている部分は、 を追加する方法@rpath/
です。ご協力いただきありがとうございます。
macos - dylib検索パスOSXを設定する方法
Xcode にプロジェクトがあり、環境変数ペインで DYLD_FALLBACK_LIBRARY_PATH を設定して、アプリケーションがリンク先のライブラリを探す場所を設定します (これは私の目的に適しています)。
現在、このプロジェクトを生成する CMakeLists.txt ファイルを作成しており、スクリプトからこのプロパティを設定したいと考えています。
私はこれができることを知っています:
しかし、実行すると次のエラーが発生します。
アプリケーションを起動するとき。声明は同じではないと思います。
CMakeLists.txt から Xcode にあるものと同等のものをどのように達成できるか誰かが知っていますか?
私はCMake RPATHのことを漠然と認識していますが、可能であれば避けたいと思います。
お時間をいただきありがとうございます!
乾杯!
トム