問題タブ [install-name-tool]

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 投票する
1 に答える
11805 参照

xcode - プラグイン バンドルでの dylib @executable_path パスの問題

私はプラグイン バンドルを開発しています。たとえば、MyPlugIn.bundle アプリケーション用ですBigApp.app。このバンドルには dylib が必要MyPlugIn.bundle/Contents/Resources/library.dylibです。単純なアプリケーション バンドルの場合と同様に、library.dylib のパスを再配置しました。

しかし、BigApp.app はこのバンドルの読み込みに失敗し、Mac OS X の Console.app は次のログを記録します。

@executable_pathは MyPlugIn.bundle 実行可能パスではなく BigApp.app 実行可能パスに置き換えられているようです。

絶対パスなしで、Mac OS X 10.4 (Tiger)で動作するようにするための回避策はありますか? ありがとう。

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

c++ - 動的ライブラリに依存するアプリケーションをデプロイするには?

GStreamer ライブラリを使用するアプリケーションを開発しています。展開を容易にするために、すべての GStreamer ライブラリをローカル バンドルにまとめたいと考えています。このために、次のことを行う小さなスクリプトを作成しました。

  • 依存関係を再帰的にトラバースする ( を使用otool -L)
  • すべての依存関係をローカル ディレクトリにコピーする
  • すべての依存パスを @executable_path に相対的に作成します (を使用install_name_tool)

(興味がある場合は、Ruby スクリプトを参照してください。)

gst_initただし、呼び出し時にランタイム エラーが表示されるようになりました。

これらのエラーは、ローカライズされたライブラリを使用した場合にのみ発生します。


install_name_tool の使用に関して、特定の「よくある落とし穴」はありますか? 誰かが私が間違っている可能性があることを知っていますか? 特定の詳細を知る必要がある場合は、お気軽にお問い合わせください。

更新
いくつか変更しました:

  • 依存ライブラリについては、id ではなく dylib パスのみを変更するようになりました (のみを使用install_name_tool -changeし、 を変更しませんinstall_name_tool -id)。
  • メイン ライブラリの場合、実行可能パス ( @executable_name/components/Video.dylib) に相対的な id 値を設定します。

これら2つの変更により、機能します。しかし、なぜそれが機能するのかは私にはまだ明らかではありません。「id」プロパティの意味を理解するのに苦労しています。パス名形式の識別子のようです。依存ライブラリ用に変更すると実行時エラーが発生するのはなぜですか? さらなる実験で、これらの質問に対する答えを見つけようとします...

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

linux - 共有ライブラリに依存するプログラムをビルドした後で、共有ライブラリのファイル名を変更するにはどうすればよいですか?

ディレクトリ構造の奥深くにある共有ライブラリに依存するプログラムがあります。その共有ライブラリをより良い場所に移動したいと思います。OS X では、これは install_name_tool で実行できます。Linux に相当するものが見つかりません。

参考までにreadelf -d myprogram、次の言い換え出力を吐き出します。

(そしてリクエストにより、ldd myprogram:)

「this/is/terrible/library.so」を「shared/library.so」に訂正したいと思います。プログラムが、相対パス this/is/terrible/library.so が実際に存在する「構築された」場所に残っている場合、予想どおり、ldd はそれを見つけることができることに注意してください。

RPATH については知っていますが、探しているものではありません。検索パスをグローバルに変更する必要はありません。

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

macos - install_name_tool を使用すると何がうまくいかないのですか?

ビルド後に dylib のインストール パスを変更しようとしています。otool -L現在のパスが何であるかを確認するために使用します。そして、私は:

エラーにはなりませんが、何も変わりません。パスをもう一度確認すると、古いパスがまだ残っています。また、新しいパスは古いパスよりもはるかに短いため、問題はありません.libは、より多くのファイルパススペースのために追加のフラグでコンパイルされていると思います.

何か案は?

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

linker - dylibから依存共有ライブラリを削除しますか?

install_name_toolの-changeオプションを使用して、dylibに格納されている依存共有ライブラリの名前を変更できることは知っていますが、依存共有ライブラリを削除する方法はあります。これは、LC_LOAD_DYLIBコマンドであると考えています。 dylibでotool-Lを実行すると表示されますか?

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

macos - install_name_tool は何もしません

OSX に展開するアプリケーションを準備しています。唯一の問題は、共有ライブラリの再配置です。

それらをすべて .app-folder 自体の Frameworks-folder 内に配置しました。

私がすべてのライブラリで試しているのは次のようなものです:

実行可能ファイルで otool -L を再度実行すると、何も変更されません。これはまだ出力です。

私は何を間違っていますか?

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

macos - ビルド時に .dylib のインストール名を変更するにはどうすればよいですか

Mac OS X (10.7.1) で C++ 用のgoogle-gflagsコマンドライン フラグ ライブラリを構築しています。ビルドプロセスは次のとおりです。

ビルド時に生成された共有ライブラリのインストール名を変更し、install_name_toolその後は使用しないようにしたいと考えています。

デフォルトでは、生成された共有ライブラリのインストール名libgflags.dylibは出力パスです。

のマニュアル ページにld(1)は、-install_nameリンク時に動的ライブラリのインストール名を変更するために使用できるオプションがあります。

たとえば、ダミー プログラムを使用すると、次のようになります。

しかし、./configureスクリプトでこのコマンド ライン オプションを使用できません。変数を手動で設定しようとしましCFLAGSたが、エラーが発生します。

configureでは、.dylib を使用して、またはmake使用せずに生成された .dylib のインストール名を変更することは可能install_name_toolですか?

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

macos - Mac Os XのMach-Oライブラリにinstall_name_toolとotoolが必要なのはなぜですか?

Xcode 4の最新バージョンを使用してCocoaアプリケーションを開発していますが、ダイナミックライブラリをプロジェクトにリンクしたいと思います(dylibs)。

プロジェクトにライブラリを追加するだけでは十分ではないことをどこかで読みました。実行install_name_toolotoolて、プロジェクトにバンドルされているライブラリをプロジェクトで使用する必要があるためです。

のマニュアルページを読みましたがinstall_name_tool、なぜこれを行う必要があるのか​​わかりません。

ライブラリはどのように機能しますか?/usr/local/lib/mylibrary.dylib実行中のように、アプリケーションとライブラリが私のマシンの特定の場所を指すパスを持っている部分に特に興味がありますotool -L

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

python - Mac OSX Lion (Xcode を使用) で virtualenv を実行すると install_name_tool エラーが発生する

Python 2.6 で mkvirtualenv を実行しようとすると、次のエラーが表示されます。

install_name_tool を呼び出せませんでした -- Apple の開発ツールがインストールされている必要があります

Xcodeをインストールしました。(ダウンロードしてインストールを待っているだけでなく、実際にインストールされています)。

コマンド which install_name_tool では何も得られません。なぜ私はそれを呼び出すことができないのですか?

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

macos - Xcode 4、dylib&install_name_tool

OSXプロジェクトでdylibを動作させようとしています。

私はいくつかのサンプルを読んでいます、これは具体的には: Xcode4がdylibを追加しています

しかし、私はまだそれを機能させることができません。

これが私が実行したステップです:

  1. tests.1.dylibをXcodeプロジェクトフォルダーにコピーしました。
  2. 走ったsudo install_name_tool -id @executable_path/../Frameworks/testing.1.dylib testing.1.dylib
  3. ラン:otool -L testing.1.dylibそして以下を受け取りました:

    tests.1.dylib :
    @ executeable_path /../ Frameworks / tests.1.dylib(互換性バージョン2.0.0、現在のバージョン2.0.0)
    /usr/lib/libSystem.B.dylib(互換性バージョン1.0.0、現在バージョン159.1.0)

  4. プロジェクトにフレームワークとしてを追加しましたtesting.1.dylib。(ライブラリオプション付きのリンクバンドルを使用)。

  5. この時点で、testing1.dylibをコンパイルすると、期待どおりに.App / Frameworkにコピーされないため、手動でフレームワークパスを作成し、testing.1.dylibをそれにコピーします。a)mkdir -p tests.app /Contents/Frameworksb)cptesting.1.dylibtesting.app/Contents/Frameworks
  6. XcodeでRuntime Search Paths、ターゲットとプロジェクトの両方のを@ executeable_path/../Frameworksに更新します。

次に、testing.appを別の新しくインストールしたマシンにコピーして、実行しようとします。次のエラーが発生します。

dyld:ライブラリがロードされていません:/user/local/lib/testing1.dylib参照元:/Users/me/testing.app/MacOS/./testing理由:画像が見つかりません

私は何が欠けていますか?

注:install_name_toolを実行する場合、sudoを使用する必要があります。そうしないと、次のエラーが発生します。

install_name_tool:入力ファイルを開くことができません:testing.1.dylib for write(許可が拒否されました)install_name_tool:オフセットを探すことができません:0 in file:testing.1.dylib for write(不正なファイル記述子)install_name_tool:できませんファイルに新しいヘッダーを書き込む:testing.1.dylib(不正なファイル記述子)install_name_tool:入力ファイルに書き込まれたものを閉じることができません:testing.1.dylib(不正なファイル記述子)