2013-03-08 2 views
0

i5는 64 비트 프로세서 여야합니다. this video에 따르면 터미널 i에 uname -m을 입력하면 x86_64를 얻어야합니다. 하지만 제 경우에는 대신 i386이라고 말합니다. 그게 왜? 나는 또한 64 비트 전용 앱인 앱을 개발했다. 해당 응용 프로그램이이 Mac에서 실행되지 않습니다. 시작시 충돌이 발생합니다. 하지만 64 비트 대신 x86_64 모드로 컴파일하면 작동합니다. 누군가이 문제를 해결하는 방법에 대한 아이디어가 있습니까?32 비트 Mac에서 실행중인 64 비트 프로세서 <a href="http://support.apple.com/kb/HT3696?viewlocale=it_IT&locale=it_IT" rel="nofollow">apple's mac processor list</a>에 따라

+0

"64 비트 전용"이란 무엇입니까? x86_64는 64 비트 전용입니다. –

+0

x86_64 **는 ** 64 비트입니다. – trojanfoe

+0

http://support.apple.com/kb/HT3773 및 http://support.apple.com/kb/HT3770 – robertklep

답변

1

ARC는 32 비트 런타임에서 지원되지 않습니다. 따라서 ARC를 사용하는 경우 64 비트 바이너리 만 생성해야합니다. Transitioning to ARC Release Notes 가입일

:

는 는

은 ARC 5. 약 참조 OS X 10.6 및 v10.7 (64 비트 애플리케이션)에 대한 및 iOS 4 iOS 용 엑스 코드 4.2 지원 지원되지 OS의 X 10.6 및 iOS 4에

+0

고맙지 만 내 질문은 기본적으로 : 프로세서가 i5 인 경우 왜 64 비트 전용 응용 프로그램을 실행하지 않지만 32/64 비트 응용 프로그램을 성공적으로 실행합니까? – sharkyenergy

+0

OSX가 32 비트 모드로 부팅 된 경우 64 비트 바이너리 대신 32 비트 바이너리가 사용됩니다. 64 비트 모드로 부팅하면 64 비트를 대신 사용합니다. – trojanfoe

+0

64 비트 모드로 영구적으로 부팅 할 때 단점이 있습니까? 당신의 도움을 주셔서 감사합니다! – sharkyenergy

1

비디오는 잘못 : 커널은 당신과 같은 유저 랜드 프로그램과는 거의 상관이있는에 실행되는 어떤 모드 uname -m 당신을 알려줍니다. CPU가 64 비트 가능 여부를 확인하려면 sysctl hw.cpu64bit_capable을 사용하십시오. i5가 있으므로 hw.cpu64bit_capable: 1을 "예"(0은 "아니오"를 의미)로 인쇄해야합니다. 또한 Activity Monitor 유틸리티를 실행하고 다양한 프로세스가 실행중인 모드를 기록하십시오. 10.6에서 OS X에서 제공되는 대부분의 프로그램이 32 비트로 제공 되었기 때문에 많은 것들이 "Intel (64 비트)"에 포함될 것입니다./64 비트 이중 아키텍처를 지원하며 64 비트를 선호합니다.

이제 응용 프로그램에 대해 : 64 비트 만 또는 63/64를 컴파일 할 때 64 비트 모드로 실행해야하므로 문제가 될 수 있습니다. 확실히 32/64를 컴파일하고 실행 한 다음 Activity Monitor를 사용하여 실제로 실행중인 모드를 확인하십시오.

확실히 말할 수는 없지만 내 생각 엔 앱에 문제가 있다는 것입니다. 호. 필자가 이해하는 한, 64 비트 만 컴파일하면 (32/64를 컴파일 할 경우 비활성화 됨) 활성화됩니다.

+0

대단히 감사합니다! 나는 이전 Mac에 xcode 4.2를 설치하려고 시도했는데 CFNetwork.framework에 대한 오류가 발생한 프로젝트를로드했을 때. (xcode 4.6에서이 오류가 발생하지 않음) 어쨌든 당신의 tipps에 감사드립니다! ARC를 사용하지 않도록주의를 기울여야합니까? 감사! – sharkyenergy

+0

@Justme : 안타깝게도 ARC에 익숙하지 않습니다 (그리고 내가 모르는 컴파일 모드 사이에 다른 차이가있을 수 있습니다). 기본 디버깅에 대해 다시 생각해 볼 것을 제안합니다. 충돌 로그를 확인하고, 디버거에서 실행하고, 누수 등을 찾으십시오. –