問題タブ [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.
macos - Mac で rpath を使用してリンクするように scons を設定するには?
RPATHを使用してタスクをリンクするためにUbuntuでは機能しますが、Macでは機能しません
Ubuntu で を使用するldd
と、共有ライブラリが絶対パスでリンクされていることがわかります。しかしotool -L
、Macで使用すると、Sconstructファイルのトップディレクトリへの相対パスが得られます。scons を使用して Mac で RPATH を正しくセットアップした人はいますか?
linux - 共有オブジェクト ファイルの rpath
実行可能ファイルのrpath
は、実行時に共有オブジェクトを検索する 1 つ以上のディレクトリを指定します。
私の質問は、共有オブジェクト ファイル自体にも静的にコンパイルされたrpath
s があるかどうかです。
最近、共有オブジェクトとリンクするときにランタイム エラーが発生しました。
このエラーは、実際にはライブラリ自体mylib.so
が静的にコンパイルされていることを示していrpath
ます。
私の理解では、それrpath
は実行可能ファイルにのみ適用され、共有オブジェクトには適用されませんでした。rpath
共有オブジェクトにも適用されますか?
c - cmocka のインストール中に Mac OS X で RPATH の問題を処理するにはどうすればよいですか?
cmocka
Mac OSX Yosemite 10.10.3 で単体テスト用のライブラリをインストールして実行しようとしていますが、設定に問題がありRPATH
ます。
アップデート:
cmocka.h
@baf のおかげで、次のように手動で CMakeLists.txtに含めることができました。
しかし、なぜ手動で行わなければならないのでしょうか。
私はすでにそれをインストールするさまざまな方法を試しました:
私がこれまでに行ったこと:
ここから cmocka をダウンロードします。バージョン 1.0。
tar xvf cmocka-1.0.1.tar.xz
cd cmocka-1.0.1
、mkdir build
およびcd build
sudo cmake ..
ここに次のようなメッセージが表示されます。
-- 設定完了
CMake 警告 (開発者):
ポリシー CMP0042 が設定されていません: MACOSX_RPATH はデフォルトで有効になっています。ポリシーの詳細については、「cmake --help-policy CMP0042」を実行してください。cmake_policy コマンドを使用してポリシーを設定し、この警告を抑制します。
MACOSX_RPATH は、次のターゲットに対して指定されていません。
cmocka_shared
この警告は、プロジェクト開発者向けです。-Wno-dev を使用して抑制します。
質問 1:rpath
上記のような警告が表示されないようにするにはどうすればよいですか?
須藤
make
須藤
make install
cmocka
今すぐインストールする必要がありますよね?
ライブラリcmake
を使用している私のプログラムを実行しています。cmocka
だから今cmake
、私は自分のプログラムを実行し、メインCMakeList.txt
ファイルには次のような行があります:
しかし、この段階では警告は表示されないので、コンピューター上でfind_libarary(CMOCKA cmocka)
正常に検出cmocka
されたと思います。
make
私のプログラムのために走っています。
実行make
中に次のようなエラーが発生します。
だからきっとcmocka
見つからない…。
質問 #2:cmocka
ライブラリが見つからないのはなぜですか?
その他の注意事項:
走ってみた
/li>
しかし、それは役に立ちませんでした。MacではなくLinux向けのソリューションだと思います。
ここの公式ドキュメントから
RAPTH
Macについて何かを学ぼうとしました: http://www.cmake.org/Wiki/CMake_RPATH_handling。しかし、私はほとんど理解できず、問題の解決策を思いつくことができませんでした。cmake
cmocka
を使用してインストールしようとしましbrew
たが、同じ結果が得られました。RPATH
さらに、 SO 、リンク、およびに関する多くの質問を読みましcmocka
たが、適切な解決策も見つかりませんでした。それでも、関連するスレッドのリストは次のとおりです。私は走っ
otool -L cmocka
た。これが私が得たものです:
macos - OSX: ランタイム依存の dylib でアプリを起動する
OSX 10.10 ヨセミテ。
私のアプリケーションはインテル® IPP に依存しています。コンパイル時には 2 つの dylib に依存しますが、これらは実行時にロードされる (otool -L では表示されない) 他の dylib に依存します。アプリケーションを起動すると、これらのライブラリが見つかりません。
アプリ (またはコンパイル時間に依存する dylibs)に対してフォルダーを指定して、ランタイム dylibs のパスを検索する方法がわかりません。
私が理解できる限り、rpath を使用する必要があります。しかし、具体的に何をすべきでしょうか?ランタイム検索パスを設定するには? 実行可能ファイルまたは dylib に「rpath」を設定する必要がありますか?
macos - CMAKE_MACOSX_RPATH を使用してビルド ツリー外のライブラリをリンクする
この問題は MacOS X 固有の問題です。lib_xxx
ビルド ツリーの外にある任意の場所にあるライブラリをリンクしたいと思います。すべてのシステムで同じ場所にあります。デフォルトでは、CMake は次のように依存関係を追加します。
@executable_path
次のいずれかに変更する方法を知りたいです。
ライブラリへの絶対パス。たとえば、次の
/li>otool
出力が表示されます@rpath
lib_xxx
その後、を使用して場所を管理できましたRPATH
。私はこのオプションを好みます。
ドキュメントとフォーラムからCMAKE_MACOSX_RPATH
、問題を解決してオプション (2) を実装する必要があるようです。それでも、CMakeLists.txt
以下は依然として@executable_path/libwupienginemac.dylib
依存関係をもたらします。
c++ - cmakeでLinuxバイナリのrpathを指定する方法
このようなコード行を含む CMakeLists.txt ファイルがあります。
実行可能ファイルをビルドして実行すると
その上に、dir_a、dir_b、dir_c の RPATH が表示されます。
作成したい場合、cmakeで何ができますか
- 空の RPATH で実行可能ですか?
- いくつかのパスで実行可能ですが、link_directories 行で指定されていませんか?
実行可能ファイルは「インストール」されるべきではありません。