問題タブ [otool]
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 - .framework バンドルを otool で逆コンパイルしますか?
コマンドラインと otool を使用して、Mac で .framework バンドルを逆コンパイルしようとしています。それは私を許しません-無効なファイルエラーまたはそのようなもの。otool は .a 静的ライブラリで動作することがわかりました。
.framework バンドルを逆コンパイルする方法はありますか?
jailbreak - ジェイルブレイクされた iPhone での otool -L の問題
脱獄したiPhoneを接続し、sshして実行します
ここに出力があります
そして、私は実行します
ディレクトリには次が含まれます。
彼らにはCoreFoundationがありません
そして私は実行します
CoreFoundationというファイルもありません。CoreFoundationはdylibであるべきだと
思いました。しかし、なぜ私はそれを見つけることができません。それがdylibでない場合、それは正確には何ですか?
もちろん、私のAppStoreはうまく動作します
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
ですか?
c - バイナリ (MACH-O) ファイル ロード コマンドの読み取り
otool や同様のツールはロード コマンドをどのように読み取りますか? これを理解するためのオープンソースツールを見つけることができませんでした (otool は部分的にオープンソースですが)。バイナリファイルをどのように解析しますか? それはどこから始まりますか?
ありがとう
xcode - MacPorts にバンドルされた Mac OS X .app を簡単に構築
Go で記述されたアプリケーションから Mac OS X .app バンドルを構築するためのbash スクリプトがあります。このスクリプトは、Homebrew インストールから必要なライブラリ、リソースなどを抽出し、ライブラリを微調整することによって機能します。MacPorts のサポートを追加できてうれしいですが、..
Xcode プロジェクトなどを使用するなど、これを行う簡単な方法はありませんか? go用のpy2appの類似物はありますか? .app バンドルでの外部ライブラリの使用について知っておくべきことは何ですか?
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 回読み込まれていることがわかります。
objective-c - Objective-Cの逆アセンブリでセレクタに注釈を付ける方法は?
Objective-C からコンパイルされた暗号化されていないバイナリから、コマンドotool -tV
. ただし、Objective-C メソッド呼び出しは常に への呼び出しとして表示されますobjc_msgSend()
。呼び出されたセレクター (メソッドの名前) は表示されません。
メソッド呼び出しがあるときに、呼び出されたセレクターに注釈を付ける方法はありますか?
c++ - QMYSQL ドライバーがロードされていません。すべてのヒントを試しました
Mac OS 10.8でQT-CreatorをIDEとして使用して、QT 5.3でC++アプリケーションを書いています。QMYSQLプラグインをロードしようとすると問題が発生します
その結果、
だから私は試しました
より良いアウトプットを得るために
だから私はotoolを試しました
情報として、QMYSQLプラグインを自分でビルドしました
Everythink は問題ないようです。以前に DYLD_LIBRARY_PATH を /etc/profile export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH に設定しました
結果は
フォルダー /usr/local/mysql/lib :
.pro ファイルの関連部分は、iam を使用して
誰かが私が間違っていることのヒントを持っていますか?
PS私はプライバシーのためにユーザーとアプリの名前を変更しました。