問題タブ [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 投票する
2 に答える
8226 参照

xcode - install_name_tool レポートの不正なオブジェクト

マシンで install_name_tool を使用しようとするたびに、次のように報告されます

バイナリのビルド時にエラーになる可能性があることを読みました。確認するために、最も単純な Hello World C++ プログラムを作成し、install_name_tool を使用して何かを変更してみます。うまくいきませんでした。私は何を間違っていますか?

現在、XCode 4.2 で Snow Leopard OS を実行しています。

0 投票する
3 に答える
300 参照

qt - Error in shell script

I'm using a shell script to help me resolve library paths so I can send out my app bundle. I don't know much about shell scripts and was hacking something together from other pieces so I really don't know how to resolve the issue. The issue revolves around lines like done << ...

Here's some code! Note, this is based off of a Qt project.

The error this prints is referring to the line done << (echo "$hasUsrLocal")

I'll get a similar issue for done << (find MyProgram.app -type f -print0) too if I comment out some of the script. Thank you!

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

dylib - ライブラリ(dylib)をコンパイル済みのipaにリンクする

コンパイル済みの ipa と .dylib ファイルがあります。install_name_tool を使用して、ipa ファイルのバイナリに存在するライブラリを変更できます。ライブラリをipaに追加するために使用されるコマンドはありますか。具体的には、ipa の Mach-O バイナリ ファイルに LC_LOAD_DYLIB コマンドを追加します。

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

ipa - install_name_tool の編集とコンパイル

ipa ファイル内にあるマッハ o バイナリ ファイルに LC_LOADDYLIB コマンドを追加したいと考えています。install_name_tool は、別のライブラリにリンクされている既存のライブラリを変更するために使用されます。新しいライブラリを ipa に追加したい。したがって、install_name_tool.c ファイルを編集すれば、この機能を追加できると思いました。Apple オープン ソースから cctools プロジェクトをダウンロードしました。問題は、c ファイルをコンパイルできないことです。エラーが発生しています。ライブラリをIPAにリンクするか、install_name_toolファイルをコンパイルするための解決策を提案してください。

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

xcode - OSXLionのinstall_name_tool

OS 10.7.4を実行していますが、install_name_toolが見つかりません。AppStoreからXcode4.3.3をインストールしています。install_name_toolをどこで見つけて入手できるか知っている人はいますか?

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

xcode - install_name_toolの変更が配布時に伝播しない

py2appを使用してPythonGUIをアプリケーションにラップしています。別のマシンに移植すると、libpng12.0.dylibに依存関係の問題があることに気づきました。これは、X11を使用してシステムによって提供されて保存されるため、従来はpy2appによってバンドルされていませんでした。

別のdylib(バンドルされている)には、新しいバージョンのlibpngが必要です。以下のコマンドを使用して、OS Xに含めるlibpngのコピーにリンクしようとしました。これはローカルでうまく機能しますが、アプリをコピーしようとすると、古いパスに戻ります。以下のコマンドは、これをよりよく説明するはずです。

libpngをアプリのFrameworkディレクトリにコピーします。

libgdal.1.dylibの依存関係のパスを見てください(これには新しいlibpngが必要です)

したがって、libpngはシステムインストールにリンクされています。ローカル(アプリ)インストールにリンクするように変更する必要があります。

次に、それが機能したことを確認する必要があります。

だからそれはうまくいった。libpngは、システムコピーではなく、含まれているコピーにリンクされるようになりました。

次に、テストのためにアプリを別のマシンにコピーすると、libpngはlibpngのシステムインストールに静的にリンクされた状態に戻ります。

なんで?

install_tool_name -idも使用してみましたが、結果は同じです。アプリを別のマシンにコピーすると、dylibのリンクが変わり続けます。

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

xcode4 - install_name_toolを使用してdylibのパスを変更する

xcodeで実行スクリプトに入れると、ダイナミックライブラリのルックアップパスが変更されると上記のように言われました。これは、ターミナルウィンドウに次のように入力することで確認できます

出力は次のようになります

私の質問は、install_name_toolコマンドが機能しないのはなぜですか?現在はそうではありませんが、testlibプロジェクトがクライアントプロジェクトのターゲット依存関係であったときに実行されました。これで、.dylibをクライアントプロジェクトにドラッグしました。ルックアップパスはusr/local/libにとどまります。

また、usr / local / libとは何ですか、なぜシステムは私のdylibがそこにあると見なし、どのようにしてそこに到達したのですか?

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

boost - dyld: Library not loaded: libboost_system.dylib

Yet another dyld: Library not loaded dylib problem..

I've got a dylib (libboost_system.dylib) compiled from the Boost sources,
then used install-name-tool to prepare it for inclusion in the Frameworks folder of my app bundle like so:

Verified with otool:

Now added to the Xcode project, linked against the app and copied to the Frameworks folder.
But when checking the built app with otool -L it's still referring to the original (i.e. 'non-relocated') dylib:

And the app fails to start with the 'dyld: Library not loaded: libboost_system.dylib' error. Any ideas?


Note 1

Now it does work if I also post-process my app's binary with install_name_tool, i.e.:

install_name_tool -change libboost_system.dylib @executable_path/../Frameworks/libboost_system.dylib TestApp

Am I missing some Xcode option to force the compiler to change the dylib location in my app automatically as part of the build?

Surely invoking install_name_tool manually for the application consuming the dylib (i.e. one of potentially many) can just be a work-around for something I've screwed up when configuring the (application) project....

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

xcode - install_name_tool を無視してフレームワークを非公開にする

GPhoto2 Frameworkを使用して簡単なアプリケーションを作成しましたが、フレームワークが最初にコンパイルされた場所にある限り、これは機能します。ただし、これをアプリバンドル内に移動したいので、個別にインストールする必要はありません。そのため、このメインの実行可能ファイルに対して相対的に機能させる必要があります。

残念ながら、フレームワークは Xcode プロジェクトではありません。スクリプトを使用してビルドするため、インストール ディレクトリのビルド設定を単純に変更することはできません。これは、回答を探しているときによく見られる解決策です。Xcode と Mac のプログラミングにまったく慣れていないため、フレームワークを Xcode プロジェクトに変換する方法を知ることもできません。

私が遭遇した他のアドバイスは、install_name_tool を使用してライブラリ ID と依存関係を更新し、絶対パスを「@executable_path/../Frameworks/GPhoto2.framework」の形式のものに置き換えることでした。フレームワークは単一のバイナリではなく、多数の .dylib および .so ライブラリが含まれていますが、これらすべての更新は半分しか成功していません。

ビルド時にフレームワークをアプリ バンドルにコピーするように Xcode を設定しました。次に、最初にコンパイルされた場所からフレームワークを削除すると、アプリケーションの読み込みに失敗し、OS X によって生成されたレポートで、予想どおり、libgphoto2 ライブラリが見つからないことが示されます。

次に install_name_tool を使用して、アプリ バンドル内のすべてのフレームワーク ライブラリとアプリ バイナリ自体の参照を更新すると、アプリケーションは読み込まれますが、接続されているカメラが見つかりません。otool を使用すると、すべての参照が正しく変更されていることを確認できます。

しかし、フレームワークのコピーを元の場所に置き換えると、そのフレームワークが相対位置または絶対位置のどちらを使用しているかに関係なく、接続されたカメラを認識して再び適切に機能します。明らかに、ロードしているにもかかわらず、まだこの場所を見ています。フレームワークから元の場所にある個々のライブラリ ファイルを順番に削除して、問題がこれらの依存関係の結果であるかどうかを確認することさえ試みましたが、どれが欠けていてもアプリは機能しません。

ちなみに、フレームワークの更新版を使ってアプリをビルドすると、「@executable_path/../Frameworks/GPhoto2.framework/prefix/lib/libgphoto2.2.dylib」というライブラリが見つからないと言って失敗します。

何か間違ったことをしているのですか、ステップが抜けているのでしょうか、それとも、Xcode の外部で作成されたフレームワークに対して実行しようとしていることは不可能ですか?

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

objective-c - Xcode で動的ライブラリ検索パスを変更する方法はありますか

以下は私のシナリオです、

  1. 私のアプリケーションでは、libopus ライブラリを使用する必要がありました。ダウンロードしてインストールし、コンパイルします --> インストール手順は、他のオープン ソース ライブラリと同様に正常です。

  2. libopus.a を自分のアプリケーションにリンクしました。私のやり方は、デフォルトでは /usr/local/lib にインストールされるので、そこからドラッグしてアプリケーションに追加します。

私のマシンでは問題なく動作し、エラーはありませんでした。

別のマシンでは、このライブラリを静的に含めたのでスムーズに実行されることを期待していましたが、次のようにスローエラーが発生しました

だから私は、libopus.aがどういうわけかlibopus.0.dylibも動的に含むと結論付けました、

ビルド設定にコピー フェーズを追加できないため、../Framework フォルダーにコピーされます。

otool -L libpus.a を実行すると、次の結果が表示されます

dylibライブラリに依存しているため表示されません 今、私の質問は、
アプリケーションに最初にこのパスを調べるように指示する方法です

次のオプションを試しましたが、

  1. install_name_tool ですが、他のマシンでも動作するようです。したがって、ユーザーはこのスクリプトを実行する必要があります。開発者ではありません。

  2. xcodeでいくつかのオプションを設定して、RUNTIME Searchパスを設定してその特定のdylibを見つけようとしていますが、これまでのところ成功していません