問題タブ [mach-o]
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.
ios - IOS バイナリの LC_DATA_IN_CODE
メイン バイナリに 0x29 ロード コマンドが含まれる IPA ファイルがあります。これは、古いバージョンの loader.h で "LC_DATA_IN_CODE" として指定されています。
ただし、ファイルに対して何かをしようとすると (otool や codesign の使用を含む)、「unknown load command」というエラー メッセージが表示されます。
IPA ファイルをくれた人と話をするつもりですが、その前にこのコマンドの履歴を取得したかったのです。サポートされなくなったのですか? もしそうなら、どのバージョンが残されましたか? それとも、最近のバージョンの OS に再度追加されたのでしょうか? 削除すると何か害がありますか?
ありがとう。
operating-system - OS X で注入された dylib を使用して libc 関数をオーバーライドする
いくつかの libc 関数 (例: puts()
) を独自の実装でオーバーライドしようとしています。
次のように、dylib ファイルに独自の実装を定義しました。
Xcode でバイナリを dylib ファイルにリンクしてビルドすると、オーバーライドされたバージョンが呼び出されます。
ただし、バイナリに dylib を挿入すると、オーバーライドされたバージョンが呼び出されないことがわかります。dylib のエントリ ポイントに何かを記録することで、dylib がロードされていることを確認しました。
ここで誰かが、オーバーライドされたバージョンを呼び出すために何をする必要があるかを教えてもらえますか?
ios - dead_stripped できないオブジェクト ファイルを作成する方法は?
フラグが設定されていないMach-O オブジェクト ファイルを生成する最も簡単な方法は何ですか?SUBSECTIONS_VIA_SYMBOLS
リンカ ( を使用-dead_strip
) が後でテキスト セクションを切り分けて、どの部分が使用されているかを推測しようとしないようにするにはどうすればよいでしょうか?
llvm/gcc (4.2.1) へのコマンド ライン オプションを使用.subsections_via_symbols
して最初に発行されないようにするか、既存のオブジェクト ファイルからフラグを削除するコマンド ライン ツールを使用できます。
(Mach-O 仕様に基づいてそのようなツールを自分で作成することはオプションですが、可能であれば、車輪をそれほど難しく再発明したくありません)。
プラットフォーム: iOS、XCode 4.5 を使用した OSX からのクロスコンパイル。
背景:私たちは、他社がアプリに組み込む静的ライブラリを提供しています。私たちのライブラリで問題が発生すると、スタック トレースとその他の特定の重要な情報を含むクラッシュ レポートが生成されます (運が良ければ) 後で分析できます。通常、デプロイされたアプリはデバッグ情報が取り除かれているため、スタック トレースの解釈が問題になります。アプリを自分で作成する場合は、ストリッピング前の DWARF デバッグ データを保存し、それを使用して着信クラッシュ レポートのアドレスをデコードします。しかし、アプリ メーカーがリンク手順からそのようなデータを提供してくれることに頼ることはできません。
代わりに、選択した関数の実行時アドレスをクラッシュ レポートに含めるようにしています。そこから、リンカー マップ内のアドレスとクラッシュ レポート内のアドレスの間のオフセットを推測できます。.a; に詰め込む前に、ライブラリ全体を 1 つの .o に段階的にリンクしています。大きなことは 1 つしかないため、アプリが最終的にリンクされたときに、未使用の機能を削除しても節約できることはあまりありません。残念ながら、ライブラリには使用されない小さなコードがいくつかあります (メイン機能の代替 API エントリ ポイント、エラー コードを解釈するための小さなヘルパー関数など)。-dead_strip
、最終的なアプリの相対オフセットがインクリメンタルリンク操作のリンカーマップと異なるというクラッシュレポートのアドレス再構築を妨げます。
すべてのアプリ開発者に、ビルド プロセスでデッド コード ストリッピングを無効にするように求めることは現実的には不可能です。そのため、.o を「デッド ストリッピング不可」としてマークし、最終的なアプリ リンクでそれを尊重することができれば、より良い方法と思われます。
xcode - デバイスでの Cocos2d 2.x ARC の問題
cocos2d と ARC を使用するゲームに取り組んでいます。ゲームは Simulator で正常にビルドおよび実行されますが、デバイス用にビルドするとApple Mac-O Linker Errors
、libcocos2d.a などのライブラリが不足していると表示されます。
ファイルが見つからないフォルダーに移動すると、jellyfish.app しか表示されません。
私はこの種の問題についてあまり経験がなく、なぜこれが起こるのかはっきりしていません。TinyTimGames & LearnCocos2D からプロジェクトを開始する方法を確認しましたが、何が間違っているのかまだわかりません。
macos - 実行時に Mac OS プロセスで関数参照を変更する
実行時に Mac OS プロセス内の関数の参照を、独自のカスタム dylib で定義されたカスタム関数に変更する必要があります。新しい関数シグネチャはオリジナルと同じままにしました。たとえば、「open」関数を「myopen」関数に変更する必要があります。
動的シンボル テーブルと文字列テーブルを取得するために、__LINKEDIT セグメントを処理してみました。次のポインターを使用しました。1. __LINKEDIT セグメントからの VMAddrress、2. 「_dyld_register_func_for_add_image」コールバックからの mach_header および vaddr_slide、3. symtab_command からの symoff および stroff。
しかし、__LINKEDIT セグメントに記載されているシンボル テーブルと文字列テーブルを取得できません。誰かがこれに光を当てることができますか? 前もって感謝します。
mach-o - マッチョヘッダーには下位互換性がありますか?
下位にあるマッチョヘッダーは、/usr/lib/mach-o
さまざまなiOSバージョン4、5、6などの実行可能ファイルと下位互換性がありますか?もしそうなら、どこでそれらの特定のバージョンを入手できますか。Apple Darwinサイトで検索してみましたが、個別のプロジェクトとして維持されていません。
iphone - Apple Mach-O リンカー (ID) エラー _compress およびリンカー コマンドが終了コード 1 で失敗する
私はインターンシップのために iPhone から Web サーバーに写真画像をアップロードするアプリに取り組んでいますが、アプリを実行しようとするたびに Mach-O Linker エラーが発生します。このサイトで見つけたすべてを試しました (アプリの再作成、libz.dylib の追加、QuartzCore.Framework の追加) が、エラーはまだ残っています。コードの何が問題なのか知っている人はいますか?
エラー
c++ - Mach-O 実行可能ファイルを静的ライブラリとマージしますか?
あなたが持っていると仮定します
- ビルド済みの iOS 実行可能アプリ (シミュレーターまたはデバイス用)。
- ビルド済みの静的アーカイブ ライブラリ 静的ライブラリには、とりわけ c++ 静的初期化子が含まれています。
これで、2 つのビルドされた製品をマージして、古いものと同様の新しい iOS 実行可能ファイルを生成できるようになります。ただし、追加の静的ライブラリにもリンクされ、実行時に静的ライブラリの静的初期化子が実行される点が異なります。
このマージの問題を解決するのに役立つツールはどれですか?
編集:受け入れ可能な解決策は、dlopenを使用してライブラリを動的にロードすることです。これの全体的な目的はアプリケーションのテストであるため、再リンクされたアプリにはアプリ ストアが表示されません。
ios5 - 重複するシンボル_OBJC_CLASS_$ _ LoginController
私はこの質問が以前に何度も尋ねられたことを知っていますが、今まで私の問題を解決したものはありません。このエラーは、プロジェクトにファイルの複数のコピーを取得したときに発生することを知っています。ビルドをクリーンアップし、コンパイルソースのLoginController.mファイルを削除してからビルドしようとしました。罰金-エラーなし。LoginController.mファイルをComplieリソースに追加すると、コンパイラーは再び同じエラーを出しました。
次に私が試したのは、コンパイルソースからすべての.mファイルを削除し、正常にクリーンアップして再構築し、各.mファイルを慎重に追加することです。再び同じエラーが発生しました。重複するファイルが見つかりませんでしたが、なぜこれが起こっているのでしょうか。
誰かが私を案内してください。どうもありがとう。
編集: エラーは:
Ld /Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Products/Debug-iphonesimulator/TryAgain.app/TryAgain normal i386
cd /Users/svp/Desktop/TryAgain
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Products/Debug-iphonesimulator -L/Users/svp/Desktop/TryAgain/TryAgain -L/Users/svp/Desktop/TryAgain/../CorePlot_1.0/Binaries/iOS -F/Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Products/Debug-iphonesimulator -filelist /Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Intermediates/TryAgain.build/Debug-iphonesimulator/TryAgain.build/Objects-normal/i386/TryAgain.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -ObjC -all_load -fobjc-arc -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework MediaPlayer -lz -framework AVFoundation -framework MobileCoreServices -framework SystemConfiguration -framework CFNetwork -framework QuartzCore -framework UIKit -framework Foundation -framework CoreGraphics -lCorePlot-CocoaTouch -o /Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Products/Debug-iphonesimulator/TryAgain.app/TryAgain
ld: duplicate symbol _OBJC_CLASS_$_LoginController in /Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Intermediates/TryAgain.build/Debug-iphonesimulator/TryAgain.build/Objects-normal/i386/LoginController.o and /Users/svp/Library/Developer/Xcode/DerivedData/TryAgain-dhbbyywxclvxfodbunqysmmfefcl/Build/Intermediates/TryAgain.build/Debug-iphonesimulator/TryAgain.build/Objects-normal/i386/Navigator.o for architecture i386
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1
iphone - iPhone シミュレーターではなく、iPhone でコンパイルするとエラーが発生する
これはエラーメッセージです:
はい、これは恐ろしい Mach-O リンカ エラーです。私はそれらを我慢できません。私のアプリの以前のバージョンは私の iPhone で動作していました。何が起こっているのか知りたいだけです。
- マイケル