問題タブ [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.
python - Python tk フレームワーク
次のエラーを生成する python コードがあります。
私の Tk 拡張ライブラリのいくつかは、コンパイル時に /Library/Frameworks ではなく /System/Library/Frameworks に対してリンクしています。install_name_tool ツールを使用すると、バイナリを正しいフレームワークに再リンクできますが、正確には何が必要ですか?この問題を解決するには、ターミナルに入力しますか?
macos - Mac OSX での再配置後に Qt バイナリにパッチを適用するスクリプト
ソースからqt 5をビルドしています。MacOSでqtバイナリをコピーして貼り付ける最も簡単な方法は何だろうと思っています。qt フレームワークのいずれかで otool を実行すると、すべての依存関係が絶対パスを使用していることがわかります。
qt バイナリをコピーし、そのコピーに対してアプリケーションをリンクすると、機能しますが、依存するフレームワークの一部が古い場所から取得されます。バイナリを別のマシンに移動しようとすると、事態はさらに悪化します。install_name_tool を使用して問題を解決できることはわかっていますが、多くのエラーが発生しやすい手動作業です。その中で私を助けることができるスクリプトがあるかどうか疑問に思っていますか?
macos - install_name_tool -change はサイレントに失敗し、-headerpad_max_install_names フラグを無視します
dylibs へのリンクを含むコマンドライン実行可能ファイルがありますが、これは、配布されると、 によって返される指定された場所にはありませんotool -L
。
たとえば、次のバイナリがあるとしfoo
ます。
私のインストーラーには、install_name_tool -change
これを修正するために使用しようとするインストール後のスクリプトがfoo
あり、新しい場所の dylib にリンクします。
例えば:
しかし、この変更は無視され、黙って失敗します。otool -L
もう一度実行すると:
何も変わっていません。
ファット バイナリをコンパイルして、-headerpad_max_install_names
コンパイル フラグを 32 ビットの Makefile に追加しようとしました。これは問題を解決しませんでしたinstall_name_tool -change
。まだサイレントに失敗します。
64 ビット プラットフォームでは何もしないことを読み-headerpad_max_install_names
ましたが、とにかく 64 ビットの Makefile に追加しました。予想通り、これでも問題は解決しませんでした。
リンクされたdylibのパスを最終的に変更できるように、コンパイル手順を修正するにはどうすればよいinstall_name_tool
ですか?
objective-c - Mac OS X - 実行可能ファイルを別のダイナミック ライブラリにリンクし、古いものと新しいものの両方をロードする
Xcode で作成したコマンド ライン ツールをいくつかの Apple フレームワークにリンクしています。
「個人的な実験」として (動的ライブラリがどのように機能するかを少し理解しようとしているだけです)、実行可能ファイルを同じフレームワークの別のバージョンに向けようとしました。
たとえば、実行可能EXECがLIB_Aを使用し、後者がLIB_Bを使用するとします。
LIB_AとLIB_Bの両方のコピーを作成し、それらを別の (短い) ディレクトリ パスに配置しました。
以前otool -L
は、依存関係とライブラリの ID を取得していました。
次にinstall_name_tool
with ディレクティブ-id
を使用して、新しいLIB_AとLIB_Bの ID を変更しました (基本的には、名前が変更されていないため、先頭のパスを変更するだけです)。
次に、ディレクティブ-change
を使用して、新しい LIB_A が新しいLIB_Bを指すようにし、実行可能EXECが新しいLIB_Aを指すようにします。
このようにして、依存関係ツリー全体が正しく再作成されているはずだと思いました。
install_name_tool
エラーが返されず、実行可能ファイルと新しいライブラリを検査すると、otool
それらはすべて正しいパスを指しています。
残念ながら、実行可能EXECを実行すると、クラスの重複定義に関する多くのエラーがコンソールにスローされます。古いライブラリと新しいライブラリの両方がロードされたように。
最後に、Trace/BPT トラップですべてがクラッシュします: 5
例えば:
私が呼び出す場合
実行時に、実際にライブラリが 2 回読み込まれていることがわかります。
xcode - カスタム フレームワークでのコンパイル時のエラー
外部フレームワークでアプリをコンパイルしようとしています。実行すると、次のメッセージが表示されます。
フレームワークはビルドフェーズで追加され、実行しようとさえしました
私がまだ見逃している可能性のあるものはありますか?ありがとう。
xcode - Xcode 5.1.1 の install_name_tool はどこにありますか
Mac に Xcode 5 をインストールしたときに、コマンド ライン ツールをインストールしました。
install_name_tool
当時はうまくいっていました。
さて、使用しようとするinstall_name_tool
と次のエラーが表示 されますmalformed object (unknown load command 4)
。グーグルで調べたところ、このエラーはコマンドラインツールがOSまたはXcodeとともに更新されていないことが原因であることがわかりました。だから私はここに行きました(https://developer.apple.com/downloads/index.action)10.9のコマンドラインツールをダウンロードし、ターミナルで再試行しましたが、エラーは解決しませんでした。
次に、Xcode を 5 から 5.1.1 に更新しようとしましたがDownloads
、設定に移動しましたが、コマンド ライン ツールをダウンロードするオプションはありませんでした。コマンド ライン ツール用に以前にダウンロードした pkg をインストールしましたが、同じエラーが引き続き発生します。
install_name_tools は、他の同様の質問に対する回答の 1 つが示唆しているように、このディレクタには存在しません --- >/Applications/Xcode.app/Contents/Developer/usr/bin/
私の質問は、パッケージからインストールした後、どこinstall_name_tool
にインストールされますか?
xcode - dylib を自動的に検索する @executable_path を XCode に設定させる
XCode 5.1.1 を使用して OSX アプリケーションをビルドし、.dylib にリンクします。Build Phases -> Copy Files を設定して、フレームワークの宛先に .dylib をコピーしました。
XCode から起動すると正常に動作しますが、Finder から .app バンドルをダブルクリックして起動すると、XCode が Contents/Frameworks の下に忠実に配置した dylib が見つからないと不平を言います。これは finder で簡単に確認できます。
実行可能ファイルの otool -L は、探していることを明らかにします
次のように実行可能ファイルで install_name_tool を使用することで、これを簡単に回避できます。
しかし、その変更は再構築のたびに明らかに失われます。そもそも @executable_path../Frameworks を設定するように XCode に指示するにはどうすればよいですか?