일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- IOS
- Git
- Firebase
- UIButton
- stack
- Xcode
- Notification
- view
- darkmode
- MacOS
- mac
- SwiftUI
- Archive
- 한글
- 웹뷰
- Python
- Swift
- Code
- Session
- FLUTTER
- error
- Apple
- JPA
- Realm
- github
- rxswift
- appstore
- window
- iOS16
- 개발자
- Today
- Total
EEYatHo 앱 깎는 이야기
iOS ) CPU아키텍처, arm, Xcode12 빌드오류 정리 - EEYatHo iOS 본문
CPU(칩셋)는 아래와 같은 다양한 특징이 있다.
- 한번에 처리하는 데이터의 양 ( 32bit, 64bit 등 )
- 코어의 구성 ( 싱글/멀티 프로스세, 코어 갯수 등 )
- ISA ( 명령어 세트 아키텍처 ) ( CISC, RISC, VLIW )
- 쿨럭 수
- 쿨럭당 성능
- 레지스터, ALU, 캐시, 디코더의 세부 사항
- 플린 분류
- 펭의 분류
등등...
공통된 특징을 가진 CPU 칩셋을 제작한 뒤, 이름을 붙힌게 CPU아키텍처이다.
컴퓨터에서 자주 들었던 x86, x64, AMD64 등을 말한다.
특정 CPU아키텍처에서, 유저가 컴퓨터를 쉽게 사용할 수 있도록, 중간 역할을 하는 것이 운영체제(OS)이다.
때문에 운영체제는, CPU아키텍처에 종속될 수 밖에 없다.
컴퓨터의 CPU아키텍처는, 소비전력에 큰 신경을 쓰지 않고 성능을 우선으로 했지만,
모바일에서는 배터리의 한계로, 저전력 고성능을 타게팅 해야 했다.
iOS에서는 arm이라는 계열의 CPU아키텍처를 사용하며,
iOS버전별로 아키텍처의 버전은 아래와 같다.
- arm7 : iOS7 지원 옛날 기기
- arm7s : 아이폰 5, 5C
- arm64 : 아이폰 5S 및 이후 기종 (6, 6S, SE, 7…)
M1, M2 맥이 나온다는 말들은,
arm 계열의 새로운 칩셋(M1, M2)을 만들었고, 기존에 인텔에서 만든 x64칩셋을 사용하던 맥에 대체한다는 것이다.
아이폰 시뮬레이터는 맥에서 실행되기 때문에, 실행한 맥의 CPU아키텍처를 따라간다.
현재 맥은 x64에서 arm로 넘어가는 과도기로, Xcode12는 두 칩셋을 모두 지원하려 한다.
때문에 기본값으로, Xcode12는 두 칩셋에 해당하는 시뮬레이터를 빌드하려고 한다.
( Release시에만 그렇다. Debug는 현재 아키텍처용도로만 빌드하는 설정이 On 되어있음. ) ( Build Active Architecture Only. )
이때 x64칩셋의 맥에서, arm 시뮬레이터를 빌드하는데에서 오류가 발생한다.
( arm용 앱을 빌드하는 것은 당연히 가능했다. 문제는 시뮬레이터. 그리고 그것을 구동하려는 x64 맥.. )
때문에 인텔맥에서는 arm시뮬레이터를 빌드하지 말라는 조정이 필요하다.
Excluded Architectures 옵션으로 가능하다.
XcodeGen에 사용한 텍스트는 이렇다
- EXCLUDED_ARCHS[sdk=iphonesimulator*]: arm64
참고로, 아래사진처럼 시뮬레이터를 명시해주지 않고, 그냥 arm64를 통째로 배제시켜버리면,
인텔 맥의 아이폰 시뮬레이터에서만 돌아가고, arm64를 사용하는 실제 폰에서 돌아가지 않는 뒤틀린 혼종 앱을 빌드하므로,
시뮬레이터를 명시하는 것을 잊지말자.
Xcode12 빌드 오류에 대한 디테일한 설명 링크.
https://jusung.github.io/Xcode12-Build-Error/
'iOS, Swift' 카테고리의 다른 글
Swift ) 전화, 이어폰 감지 ( AVAudioSession ) - EEYatHo iOS (0) | 2021.08.24 |
---|---|
Swift ) 부모자식 뷰컨은 왜쓰는가 - EEYatHo iOS (0) | 2021.08.24 |
Swift ) NSMutableDictionary vs NSDictionary - EEYatHo iOS (0) | 2021.08.11 |
Swift ) AirBridge - EEYatHo iOS (0) | 2021.08.09 |
Swift ) 앱 실행방법에 따른 분기 - EEYatHo iOS (0) | 2021.08.09 |