Apple の Mac プロセッサ リストによると、i5 は 64 ビット プロセッサである必要があります。このビデオによると、端末に入力uname -m
すると x86_64 が表示されます。しかし、私の場合、代わりに i386 と表示されます。何故ですか?64ビットのみのアプリであるアプリも開発しました。そのアプリはこのMacで実行されていません。開始時にクラッシュします。しかし、64ビットのみではなくx86_64モードでコンパイルすると動作します。誰かがこれを修正する方法について考えを持っていますか?
2 に答える
ビデオは間違ってuname -m
います。カーネルが実行されているモードを示しています。これは、あなたのようなユーザーランド プログラムとはほとんど関係ありません。CPU が 64 ビット対応かどうかを確認したい場合は、sysctl hw.cpu64bit_capable
-- を使用します。i5 を使用しているため、 hw.cpu64bit_capable: 1
「はい」を意味するはずです (0 は「いいえ」を意味します)。また、Activity Monitor ユーティリティを実行し、さまざまなプロセスが実行されているモードに注意してください。10.6 では OS X で提供されるほとんどのプログラムが 32 /64 ビット デュアル アーキテクチャであり、64 ビットを優先します。
さて、あなたのアプリについて:64ビットのみでコンパイルするか、63/64でコンパイルするかに関係なく、64ビットモードで実行する必要があるため、それが問題だとは思いません。確かに、32/64 でコンパイルし、実行してから、Activity Monitor を使用して、実際に実行されているモードを確認してください。
確かなことは言えませんが、あなたのアプリは ARC に問題があると思います。少なくとも私が理解しているように、これは 64 ビットのみをコンパイルする場合にのみ有効になります (32/64 をコンパイルする場合は無効になります)。
ARC は 32 ビット ランタイムではサポートされていません。したがって、ARC を使用している場合は、64 ビット バイナリのみを生成する必要があります。
ARC は、OS X v10.6 および v10.7 (64 ビット アプリケーション) および iOS 4 および iOS 5 の Xcode 4.2 でサポートされています。弱参照は、OS X v10.6 および iOS 4 ではサポートされていません。