問題タブ [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.

0 投票する
0 に答える
666 参照

c - ビルドパスを含めずに gcc RPATH を設定するには?

特定の OpenSSL 共有ライブラリを使用する RHEL4 用の gcc を使用して、wget の不完全な実行可能ファイルをビルドする必要があります。LD_LIBRARY_PATH はビルド時に設定解除されます。

これは、次のように指定するだけで非常に簡単です。

そしてすべてが良いです。

しかし、これにより、不完全な実行可能ファイルの動的セクションに RPATH が作成されます。

gcc ツールチェーンを使用して、-rpath オプションを使用して指定されたもののみを使用し、ビルド時に宣言されたすべてのライブラリ パスを無視するように RPATH を設定することは可能ですか?

私は今日、以下を含む多くのSO投稿を見てきました。

わからない -Wl,-rpath -Wl,-rpath と -L の違いは何ですか?

しかし、最終的な不完全な実行可能ファイルからビルド情報を削除するという問題に対処するものは何もないようです。

編集:これは、最終的なリンク フェーズの完全なコマンド ラインです。

以下の nos と keltar のコメントのおかげで、問題がどこにあるかがわかります。

ここで、configure が 2 つの openssl ライブラリをフルパスで指定して終了する理由を解明します。

編集 2: -rpath および -L オプションが正しく機能していることを確認するためだけに。

上記のコマンドを書き直して、openssl ライブラリのビルド場所へのハード参照を削除すると、不完全な実行可能ファイルの RPATH が /usr/local/ssl/lib に設定されます。

完全に編集されたコマンドは次のとおりです。

0 投票する
4 に答える
39908 参照

c - 別の so を必要とする a に対して実行可能ファイルをリンクするときに、ld に -rpath-link が必要なのはなぜですか?

私はちょうどここに興味があります。共有オブジェクトを作成しました:

そして、もう 1 つの共有オブジェクトは、前のものにリンクします。

ここで、 に対してリンクする実行可能ファイルを作成するときに、libb.sold に -rpath-link を指定して、ld に依存していることを検出liba.soしたときに検出できるようにする必要があります。libb.so

そうしないと、ld が文句を言います。

liba.sold がリンク時に位置を特定できなければならないのはなぜtestですか? liba.so私には、 ldの存在を確認する以外に多くのことをしているようには見えないからです。たとえば、必要に応じreadelf --dynamic ./testてリストのみを実行するため、動的リンカーは独自に依存関係を検出し、独自に検索するlibb.so必要があると思います。libb.so -> liba.soliba.so

私は x86-64 GNU/Linux プラットフォームを使用しており、 の main() ルーチンtestが の関数をlibb.so呼び出し、それが の関数を呼び出しますliba.so

0 投票する
2 に答える
2004 参照

escaping - rpm 仕様ファイルでのエスケープ

次のようなステートメントを使用して、スペックファイルにrpathを設定しようとしています

しかし、「$ORIGIN」を正しくエスケープできません。行に沿ってどこにも展開しないで、文字列「$ORIGIN」を含めるにはgccへのコマンドが必要です。私は試した

そして、成功していない他のいくつか。エスケープ文字の正しい順序は?

0 投票する
1 に答える
203 参照

dylib - OS X: コンパイル後に dylib rpath が間違っている

ソースから cyrus sasl2 ライブラリを構築しています。ライブラリは /usr/local/lib にインストールされ、ヘッダーは /usr/local/include/sasl にインストールされます。これは適切です。

ただし、それらを使用しようとするアプリを実行すると、次のようになります。

ライブラリで otool -L を実行すると、不適切な相対パスが表示されます。

正しい rpath がエンコードされるように make がライブラリをコンパイルする方法を変更するにはどうすればよいですか? ライブラリでそれを変更するために install_name_tool について読みましたが、正しいパス '/usr/local/lib/libsasl2.dylib' が現在エンコードされているパスよりも長いため、'-change' を使用してもうまくいかないようです。どういうわけかライブラリをビルドするときにそれを設定できるはずではありませんか?

ありがとう。

0 投票する
0 に答える
1200 参照

macos - この Mac OS X の rpath コマンドが機能しないのはなぜですか?

rpath を使用して、アプリのいくつかのライブラリにリンクしようとしています。一部の rpath は機能し、他の機能は機能しません。

リンクしている2つの動的ライブラリがlibgunrockあり、libtd両方とも異なるディレクトリにあります。

私のリンクは次のようになります。

ロード パスは正しいです。の関連部分otool -l app:

まだエラーが発生します:

アプリで実行すると正常に動作しDYLD_LIBRARY_PATH=/Users/aterrel/workspace/apps/xdata/xlang/thunderdomeます。

libgunrock.dylibなぜうまくロードされているのかわかりませんが、そうでlibtd.dylibはありません。

0 投票する
1 に答える
647 参照

frameworks - Swift フレームワークがロードされていません

最近、Swift アプリで使用する API クライアントを完成させました。別のプロジェクトでフレームワークを作成し、メイン プロジェクトにサブプロジェクトを追加しました。これは、 QuickNimbleのフレームワークをプロジェクトに追加する方法と同様です。

アプリを実行しようとすると、次のエラーが発生します。

そして、私は一生、このエラーを解決する方法を理解できません。

My.xcodeprojはメイン プロジェクトと同じディレクトリに追加されませんが、シンボリック リンクされているように見えます。

何が起こっているか知っている人はいますか?

編集:プロジェクトをディレクトリ内に
追加しようとしましたが、それでも同じエラーが発生しますgit submodule