問題タブ [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.
ubuntu - 実行可能ファイルから rpath を削除できません
ARM プラットフォーム用にクロスコンパイルしています。私がリンクしている多くのライブラリ ファイルの中で、rpath を持っているのはごくわずかです。
必要なすべてのライブラリを 1 つのフォルダーにコピーし、それらを Netbeans (Linaro コンパイラーを使用した Ubuntu の下) を使用してプロジェクトに追加したため、それがどこから来ているのかわかりません。コマンドラインからコンパイルしても、出力は同じです。
patchelf を試しましたが、rpath が削除されません。プログラム自体は機能します(たとえば、ライブラリを検索するときに探しているパスを作成すると)。
それを修正する方法はありますか?
macos - RPATH の展開に失敗しました
OS X で実行可能ファイル (demux という名前) をビルドしましたが、常にロードに失敗し、その理由がわかりません。
フレームワークは実行可能ファイルの隣にあります。Otool は次のように表示されます。
と:
それを考えると、@executable_path を実行可能ファイルのランタイム検索パスに追加すると、相対的なインストール名の前に @rpath (@rpath/sfeMovie.framework/… のように) が付いているフレームワークとライブラリを検索できるようになると考えました。これは実行可能ファイルの隣にあります。このランタイム検索パスが正しいことを確認するには:
しかし、これは失敗し、その理由はわかりません。@executable_path/sfeMovie.framework/Versions/2.0/sfeMovie は正しいパスのように見えますが、それでも失敗します... @rpath または @executable_path の誤用はありますか?
gcc - rpath または LD_LIBRARY_PATH に $HOME が含まれている
RPATH または LD_LIBRARY_PATH が $HOME などの環境変数を含むパスを指している可能性はありますか? そのため、バイナリが異なるマシンで実行されると、ユーザー固有の検索パスになる可能性があります。
linux - LinuxでRPATH内の$ LIBを尊重するように動的ローダーを説得する方法は?
バイナリの rpath を次のように設定しました。/usr/$LIB/test:$ORIGIN/lib/
ライブラリは にありますが/usr/lib64/test、バイナリを実行すると、それらのライブラリが見つからないと表示されます。
で rpath を確認しましたreadelf -d。
質問は簡単です - なぜですか?
アップグレード #1
OS : Ubuntu 12.04.3 LTS
ld バージョン: 2.15
c++ - 共有ライブラリ RPATH およびバイナリ RPATH 優先度
共有ライブラリがバイナリにリンクされており、共有ライブラリも他のライブラリに依存している場合、共有ライブラリの RPATH とバイナリの RPATH の優先度 (リンカの検索順序) は? バイナリの RPATH は共有ライブラリの RPATH をオーバーライドできますか? 共有ライブラリ RPATH に設定した $ORIGIN は、ライブラリの場所またはバイナリの場所を参照していますか?
前もって感謝します。
matlab - Matlab: invalid mex file library not loaded
I have created a mex function (more specifically, using CUDA)
the compilation was successful, and I got a mex file zMul.mexmaci64
but on the execution, matlab reported an error:
#xA;What should I do do solve it?
additional info
setting the environment vars (PATH,LD_LIBRARY_PATH,DYLD_LIBRARY_PATH) in Matlab and in
.bash_profiledoesn't work for meI'm pretty sure that the environment vars are set correctly because when I created an alias to the
dylibfile, Matlab detected it, tried to load it, but failed with message:no suitable image found
Thanks!
macos - Delphi で生成された Dylib の OSX への信頼できる展開
Delphi で作成された .dylib を OSX にデプロイしたいと考えています。この .dylib は、サードパーティ アプリケーションによってロード可能である必要があります。
これは重複した質問のように思えますが、何度も検索しても答えが見つかりません。これと同じ問題です: https://forums.embarcadero.com/thread.jspa?messageID=592417
問題は、.dylib が .dylib を必要としているのに、サードパーティ アプリケーションから実行するlibcgunwind.1.0.dylibと見つからないことです。テストとして、にコピーしてみましたが、うまくいきました。OSX が .dylib を見つけられない場合、常に .dylib を検索します。残念ながら、私はこれを最終的な解決策として実行したくありません。なぜなら、それには権限の昇格が必要であり、単純な問題を処理するための面倒な方法のように思えるからです。libcgunwind.1.0.dylibusr/libusr/lib
もう少し詳しくotool調べると、以前は .dylib を調べていましたが、次のパスが表示されました@rpath/libcgunwind.1.0.dylib。
問題は、@rpath.dylib がサードパーティ アプリケーションによって実行されているときに、どのパスが にリストされるかについて説明がないことです。これが機能するためには、アプリケーションは常に への絶対パスを提供する必要がありますlibcgunwind.1.0.dylib。
明らかな解決策は、を使用install_name_toolして に置き換える@rpathこと@loader_pathです。私のロジックが正しければlibcgunwind.1.0.dylib、同じフォルダーにある限り、.dylib が常に .dylib を見つけるようになるはずです。.dylib は独自の依存関係を見つけることを担当する必要があるため、これは理にかなっています。
そこで、次のコマンドラインを試しました。
install_name_tool -change @rpath/libcgunwind.1.0.dylib @loader_path/libcgunwind.1.0.dylib libTest.dylib
このメッセージを受け取りました:
install_name_tool: file not in an order that can be processed (local relocation entries out of place): libTest.dylib
このエラー メッセージについていくつか検索しましたが、それに関する情報を見つけることができませんでした。install_name_toolgcc または llvm でビルドされた .dylib で見つかった特定の規則が期待されており、Delphi のコンパイラはそれらの規則を提供していないと仮定する必要があります。
Delphi のコンパイラdccosxを調べて、Delphi が送信しているコマンドライン引数を確認しましたが、有用なオプションが見つかりません。を使用するこの方法はlibcgunwind.1.0.dylib、コンパイラにとって暗黙的であるように思われ、私が調整できるものではありません。
これが問題に取り組む正しい方法だと言っているのではありません。これらは私が試した最新の方法です。問題を回避する別の方法を思いつくことができる場合は、アイデアを共有してください!
c++ - rpath を使用しないように C++ autotools プロジェクトを設定するにはどうすればよいですか?
いくつかの実行可能ファイルと共有ライブラリを含む大規模な autotools プロジェクトがあります。メインの実行可能ファイルには RPATH が埋め込まれているため、後で LD_LIBRARY_PATH でオーバーライドしたい場合に問題が発生します。この rpath を埋め込まないように (./configure などを介して) autotools に指示する方法はありますか?