問題タブ [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.
windows - -rpath リンカー フラグに相当する Windows/MSVC はありますか?
Linux/GCC では、-rpath フラグを使用して、環境変数を調整することなく、共有ライブラリの実行可能ファイルの検索パスを変更できます。
これは Windows でも実現できますか? 私の知る限り、dll は常に実行可能ファイルのディレクトリと PATH で検索されます。
私のシナリオ: 一意の名前を気にせずに、プロパティ (32/64 ビット/デバッグ/リリース) に従って共有ライブラリを場所に配置したいと考えています。Linux では、これは rpath 経由で簡単に実行できますが、Windows でこれを行う方法はまだ見つかりません。
ヒントをありがとう!
command-line - $ORIGINを使用してRPATHをCode::Blocks GCCで機能させる方法は?
特別な文字列$ORIGINを含むRPATHを、Code ::BlocksIDEでGCCを使用して構築された実行可能ファイルにリンクしようとしています。指定しました
プロジェクトのリンカオプションにありますが、GCCへのコマンドライン出力が間違っています(わかりやすくするために削除されています)。
Code :: Blocksにこの引数を指定する正しい方法は何ですか?
python - CentOS に Python 2.6 をインストールします。
CentOS を実行するシェルがあります。
私が行っているプロジェクトでは、python 2.5+ が必要ですが、centOS は 2.4 にかなり依存しています。
私が読んだところによると、2.5 にアップグレードすると、多くのことが壊れます。
2.4 とは別に 2.5 をインストールしたいのですが、やり方がわかりません。これまでのところ、ソース tarball をダウンロードし、tar を展開し、目的の./configure --prefix=/opt
場所で実行しました。今すぐできますmake, make install
か?それとももっとありますか?
gcc - AIX 5.3(ld-xlc)同等のオプションLinux(ld-gcc)-rpath
私のコンパイラ:xlcバージョン10.1環境:AIX5.3リンカー:ld
Linuxで作業する場合、gcc(4.4.1)で次のオプションを使用します
(リンカオプションの場合は-Wl)ランタイムライブラリの検索パスにディレクトリを追加します。
xlcコンパイラに相当するものは何ですか?
または、リンカの-rpathに相当するものは何ですか。
ありがとうございました。
gcc - matlab mexファイルの共有ライブラリの場所:
libhdf5を使用するmatlabmex関数を作成しようとしています。私のLinuxインストールでは、libhdf5-1.8共有ライブラリとヘッダーが提供されます。ただし、私のバージョンのMatlabであるr2007bは、1.6リリースのlibhdf5.soを提供します。(Matlab.mat
ファイルは明らかにhdf5をブートストラップします)。mexをコンパイルすると、Matlabでsegfaultが発生します。libhdf5のバージョンを1.6にダウングレードすると(長期的なオプションではありません)、コードはコンパイルされて正常に実行されます。
質問:この問題を解決するにはどうすればよいですか?mexコンパイルプロセスに/opt/matlab/bin/glnxa64/libhdf5.so.0ではなく/usr/lib64/libhdf5.so.6に対してリンクするように指示するにはどうすればよいですか?コンパイルでこれを使用しようとすると-Wl,-rpath-link,/usr/lib64
、次のようなエラーが発生します。
ack。最後の手段は、hdf5-1.6.5ヘッダーのローカルコピーをダウンロードしてそれで実行することですが、これは将来を保証するものではありません(Matlabバージョンのアップグレードは将来的に行われます)。何か案は?
編集:Ramashalankaの優れた提案によると、私は
A) 3つのコマンドmex -v
を取得するために呼び出されます。gcc
最後はリンカーコマンドです。
-v
B)コマンドを取得するためにそのリンカーコマンドをaで呼び出しましたcollect
。
C)collect2 -v -t
それと残りのフラグを呼び出しました。
私の出力の関連部分:
したがって、実際にはlibhdf5.so
from/usr/lib64
が参照されています。ただし、これは環境変数によってオーバーライドされていると思います。環境変数は、私のバージョンのMatlabが実行時に自動的に設定するため、たとえば、などLD_LIBRARY_PATH
の独自のバージョンを見つけることができます。libmex.so
このcrt_file.c
例は、私が使用している関数を使用していないb / c(H5DOpen
1.6から1.8への移行で署名が変更された(はい、私は使用しています-DH5_USE_16_API
))、または可能性は低いですがb/のいずれかで機能すると思います。 chdf5を必要とするMatlab内部の部分にはヒットしません。ack。
linux - Linux で現在の rpath を検査するプログラムによる方法はありますか?
readelf -d <elf> | grep RPATH
シェルから特定のバイナリを検査するために使用できることは承知していますが、プロセス内でこれを行うことは可能ですか?
次のようなもの(私の完全に構成されたシステムコール):
私たちのコードベースで疑わしい SO リンクの問題を診断しようとしています。可能であれば、この方法で RPATH を検査したいと考えています (外部スクリプトを生成する必要はありません)。
linux - 共有ライブラリを含む GNU/Linux Firefox プラグインの出荷 (root アクセスなしでのインストール用)
アプリケーションは Firefox プラグイン ($HOME/.mozilla/plugins からロード) であるため、LD_LIBRARY_PATH を設定するラッパー スクリプトは簡単なオプションではありません。
私の知る限り、RPATH は $HOME を参照することはできず、絶対パスしか指定できません。
Firefox は ~/.mozilla/plugins からプラグインを dlopen しようとしますが、失敗します (ユーザーのホーム ディレクトリのどこかにインストールされた共有ライブラリに依存するため)。
Firefox のメニュー項目を変更して、Firefox の周りに (LD_LIBRARY_PATH を使用して) ラッパーを提供するのはハックすぎます。
共有ライブラリに依存する標準の Firefox ロード プラグインを作成するために、インストーラ スクリプトは (root アクセスなしで) 何をすべきですか?
- 依存関係を削除するために、すべてをその .so に埋め込むようにする必要がありますか?
- インストール段階で RPATH のリンクまたはパッチを完了するために、インストーラー スクリプトを作成する必要がありますか?
xcode - リンクがジャッキアップされています..-rpathとは何ですか?MacOS X
だから、私はプロジェクトを構築していて、それはコンパイルされたライブラリ(.dylibまたは.so)からの関数を使用しています。適切な場所にヘッダーとライブラリファイル(これはすべてQtRootの一部です)がありますが、Xcodeでプロジェクトをビルドしようとすると、デバッガーエラーが発生します。
dyld:ライブラリがロードされていません:@ rpath / libRIO.so参照元:/Users/paulthompson/Documents/Programming/Build Products / Debug / MacHeliosSim.app / Contents / MacOS / MacHeliosSim理由:イメージが見つかりませんsharedlibrary apply-load-rules allデータフォーマッタは一時的に利用できません。「続行」後に再試行します。(現在、ローダーを呼び出すことはできません。ロックされています。)
これで、ビルドされたプログラム自体は、Finderから開くと問題なく実行されますが、Xcodeから実行しようとすると、私はそれを妨害します。このrpathとは何ですか。また、Xcode自体がライブラリの場所を認識しているにもかかわらず、デバッガーがライブラリを検出できないのはなぜですか。また、Finderから実行すると、プログラムもライブラリを検出できるようです。
qt - QtCreatorを使用したUnixシステムでのQtアプリケーションの開発
Qt Creator(2.1 RC)を使用してLinuxでQtアプリケーションを開発しています。2つのプロジェクトを作成し、ウィザードを使用してライブラリプロジェクトをアプリケーションプロジェクトに追加しました。ただし、実行すると、次のエラーが発生します。
/home/jakepetroules/silverlock/silverlock-build-desktop/desktop/silverlock: error while loading shared libraries: libsilverlocklib.so.1: cannot open shared object file: No such file or directory
Qt Creatorが実行する環境を適切にセットアップするために設定できるqmake変数はありますか?ビルドをテストするためだけに、ランチャースクリプトを使用してすべてのファイルを別のディレクトリにコピーする必要があるのは非常に面倒です。Windowsでは完全に機能します-QtCreatorは、アプリケーションの実行時にDLLを含むディレクトリをPATHに自動的に追加します(Explorerから実行するとDLLが見つからないと表示されます)。Mac OS Xはさらに悪く、すべてに対してinstall_name_toolを実行する必要があります...
では、Qt Creatorの実行ボタンからすべてが正しく機能するようにqmakeファイルを設定するにはどうすればよいですか?この機能がないとデバッグするのも難しいです。
macos - 再配置可能なアプリを作成する方法
誰かが私を助けてくれることを願っています。Pythonでプログラムされたものがあります。それは多くのライブラリを使用します。そこで、virtualenvを使用して仮想環境を作成し、この環境で必要なすべてのファイルをコピーしました。次に、Platypusを使用して.appを作成しました。.soまたは.dylibでotool-Lを使用すると、リンクが元のインストール場所を指すため、アプリは機能しません。install_name_toolを使用して新しい絶対パスを設定できることを知っています。アプリは動作しますが、再配置できません。少し読んだ後、Mac OSX10.5+に-rpathを設定できることがわかりました。そこで、パスを@ rpath / lib / ... dylibに変更し、アプリを次のように起動します
しかし、それは機能していません。だから私は何かが欠けているか、何か間違ったことをしていますか?