본문 바로가기
#컴퓨터 과학 [Computer Science]/운영체제 (Operating System)

[OS - 🍎 macOS] Building a Universal macOS Binary

by cy_mos 2021. 4. 25.
반응형
카테고리 (Category) 작성 날짜 (Write Date) 최근 수정 날자 (Recent Write Date) 작성자 (Writer)
Operating System 2021.04.25. 18:51 2021.05.16. 19:46 Dev.Yang

 

🛠 유니버셜 애플리케이션 (Universal Application)

At runtime, the system automatically chooses which version to run on the current platform.

 

Universal Application은 Intel Process 기반의 실행 파일과 ARM64 Process 기반의 실행 파일을 모두 포함하도 있는 애플리케이션을 말합니다. 두 개의 실행파일들은 런타임 실행시간에 macOS 운영체제 시스템이 자동적으로 현재 플렛폼에 맞추어 실행할 수 있도록 설정되어 있습니다. 

 

Universal Application 작업을 하기 위해서는 아래와 같은 개발 환경이 필요합니다.

  • Xcode 12 or a later version

🛠 Universal Application 확인하는 방법

macOS 운영체제에서 지원하고 있는 응용 프로그램 형태는 아래와 같습니다.

 

  • 응용 프로그램 (Intel)은 앱이 Intel 프로세서만 지원하며 Apple Silicon이 탑재된 Mac에서 작동하려면 Rosetta가 필요함을 의미합니다.
  • 응용 프로그램 (Universal)은 앱이 Apple Silicon 및 Intel 프로세서를 모두 지원하며 기본적으로 Apple Silicon을 사용함을 의미합니다.

 

Universal Application을 확인하는 방법은 lipo 명령어를 사용하여 확인하는 방법응용 프로그램 정보 가져오기를 사용하여 확인하는 방법이 있습니다.

 

  • lipo 명령어를 사용하여 Universal Application을 확인하는 방법은 아래와 같습니다. lipo 명령어에 관련 된 정보는 아래 링크를 확인하여 주세요.
lipo -archs [TARGET APPLICATION PATH]
lipo -info [TARGET APPLICATION PATH]

lipo -archs /System/Applications/Mail.app/Contents/MacOS/Mail
lipo -info /System/Applications/Mail.app/Contents/MacOS/Mail

 

  • 응용 프로그램 정보 가져오기를 사용하여 확인하는 방법은 아래의 이미지를 확인하여 주세요.

다음과 같이 '정보 가져오기'를 사용하여 Rosetta가 필요하거나 Rosetta를 사용할 수 있는 앱을 식별할 수 있습니다.


🛠 용어설명

Apple Silicon - 애플이 설계한 프로세서 (Apple-designed processors)는 ARM 아키텍처를 사용하여 애플이 설계한 단일 칩 체제(SoC)와 시스템 인 패키지(SiP) 프로세서로, 애플 실리콘(Apple Silicon)으로 불린다. 애플의 아이폰, 아이패드, 애플워치 플랫폼에 기본적으로 사용되며, 홈팟, 아이팟 터치, 애플 TV 등의 제품에도 사용된다. 애플은 또한 무선 이어폰인 에어팟을 위해 애플 H1이라고 불리는 SoC를 설계했다. 2020년 6월 22일, 애플은 매킨토시 컴퓨터를 인텔 프로세서에서 ARM 기반 애플 설계 프로세서로 전환할 계획을 발표했다.

 

Apple Silicon이 탑재된 Mac 컴퓨터는 다음과 같습니다.

  • MacBook Pro (13-inch, M1, 2020)
  • MacBook Air (M1, 2020)
  • Mac mini (M1, 2020)

 

자신의 Mac 컴퓨터가 Apple Silicon이 탑재되어 있는지 확인하는 방법은 Apple 메뉴() > 이 Mac에 관하여를 선택합니다.

 

'이 Mac에 관하여'를 열려면 Apple 메뉴() > 이 Mac에 관하여를 선택합니다.

 

  • Rosetta - Intel 프로세서가 장착된 Mac용으로 제작된 애플리케이션을 Apple Silicon이 장착된 Mac에서 사용할 수 있도록 도와주는 프로그램입니다.
  • Fat Binary - 유니버설 바이너리(Universal binary)는 애플 용어로, 파워피씨나 X86 (인텔) 기반의 매킨토시 컴퓨터에서 에뮬레이션 과정 없이 그대로 실행되는 실행 파일이나 응용 프로그램을 가리킨다. 유니버설 바이너리는 보통, 파워피씨와 X86 버전으로 컴파일된 응용 프로그램을 포함하고 있다. 운영 체제는 헤더를 통해 유니버설 바이너리를 찾아내고 사용 중인 아키텍처에 따라 적절한 섹션을 실행한다. 응용 프로그램이 어떠한 지원 아키텍처에서도 실행할 수 있게 도와 주며 어떠한 성능 저하도 일어나지 않는다.

🛠 Universal Binary 생성하는 방법

Universal Binary 생성하여 Build 작업을 수행하는 세부적인 방법은 아래의 주소를 통하여 동영상을 확인해주세요.

 

 

Port your Mac app to Apple silicon - WWDC 2020 - Videos - Apple Developer

Your porting questions, answered: Learn how to recompile your macOS app for Apple silicon Macs and build universal apps that launch...

developer.apple.com

 

 (Update the Architecture List of Custom Makefiles)

x86_app: main.c
    $(CC) main.c -o x86_app -target x86_64-apple-macos10.12
arm_app: main.c
    $(CC) main.c -o arm_app -target arm64-apple-macos11
universal_app: x86_app arm_app
    lipo -create -output universal_app x86_app arm_app

🛠 기타사항

  • Universal Binary Build 작업을 수행하는 환경은 대부분 macOS BigSur 환경에서 진행하는 경우 Python 3.6 Version은 작동하지 않으며 Python 3.6 보다 높은 버전이 필요합니다.

🚀 REFERENCE

더보기
반응형

댓글