유니버설 바이너리

Universal binary
범용 응용 프로그램을 나타내기 위해 사용되는 로고

범용 바이너리 포맷은 Apple 용어로 Power에서 네이티브로 실행되는 실행 파일의 포맷입니다.PC 또는 인텔제 IA-32 또는 인텔 64 또는 ARM64 기반의 Macintosh 컴퓨터. 포맷은 NeXTStep에서 "멀티 아키텍처 바이너리"로 시작되었으며 Power Macintosh에서 볼 수 있듯이 일반적으로 팻 바이너리로 알려져 있습니다.

Mac OS X Snow Leopard가 출시되고 그 이전부터 Mozilla와 같은[1] 일부 소프트웨어 퍼블리셔는 i386(32비트 Intel) 및 x86_64 시스템 모두를 위한 빌드를 포함하는 팻 바이너리를 지칭하기 위해 "범용"이라는 용어를 사용했습니다.전원 중 하나를 선택하는 데 사용되는 것과 동일한 메커니즘응용 프로그램의 PC 또는 인텔 빌드를 사용하여 Power의 32비트 또는 64비트 빌드를 선택할 수도 있습니다.PC 또는 인텔의 아키텍처.

그러나 애플은 서드파티 소프트웨어 퍼블리셔에게 유니버설 [2]바이너리와 관련된 애플의 상표 사용을 허가하기 위해 PowerPC와 인텔의 네이티브 호환성을 계속 요구하고 있습니다.Apple은 이러한 서드파티 소프트웨어 퍼블리셔가 모든 아키텍처에 대해 개별 빌드를 번들해야 하는지 여부를 지정하지 않습니다.

유니버설 바이너리는 2005년 Apple Worldwide Developers Conference에서 기존의 PowerPC 아키텍처에서 인텔 프로세서를 탑재한 시스템으로의 이행을 용이하게 하기 위한 수단으로 Mac OS에 도입되었습니다.이는 2006년부터 출하되기 시작했습니다.유니버설 바이너리에는 일반적으로 컴파일된 응용 프로그램의 PowerPC 버전과 x86 버전이 모두 포함됩니다.운영체제는 헤더에 의해 범용 바이너리를 검출하고 사용 중인 아키텍처에 대한 적절한 섹션을 실행합니다.이를 통해 애플리케이션을 지원되는 아키텍처에서 기본적으로 실행할 수 있으며, 더 큰 바이너리가 차지하는 스토리지 공간의 증가 외에는 성능에 부정적인 영향을 미치지 않습니다.

Mac OS X Snow Leopard부터는 Intel 기반 Mac만 지원되므로 Mac OS X 10.6 이상에만 있는 기능에 의존하는 소프트웨어는 Intel 기반 Mac에서만 실행되므로 Intel/PPC 팻 바이너리가 필요하지 않습니다.또한 OS X Lion부터는 64비트 인텔 Mac만 지원되므로 OS X 10.7 이후의 신기능에 의존하는 소프트웨어는 64비트 프로세서에서만 실행되므로 32비트/64비트 팻 [3][4]바이너리가 필요하지 않습니다.팻 바이너리는 오래된 하드웨어에서 실행되는 이전 버전의 Mac OS X와 하위 호환되도록 설계된 소프트웨어에만 필요합니다.

새로운 Universal 2 바이너리 형식은 2020 세계 개발자 회의에서 [5]소개되었습니다.Universal 2를 사용하면 인텔 x86-64 기반 및 ARM64 기반 Macintosh 컴퓨터에서 응용 프로그램을 실행하여 Apple 실리콘으로 전환할 수 있습니다.

동기

두 가지 일반적인 대체 솔루션이 있습니다.첫 번째는 x86 아키텍처용으로 컴파일된 바이너리와 PowerPC 아키텍처용으로 컴파일된 바이너리를 2개 제공하는 것입니다.그러나 이 두 가지 차이점을 잘 모르는 소프트웨어 사용자는 혼란스러울 수 있습니다.단, 이 혼란은 개선된 문서 또는 하이브리드 CD를 사용하여 해결할 수 있습니다.다른 대안은 다른 아키텍처를 실행하는 시스템에 의한 한 아키텍처의 에뮬레이션에 의존하는 것입니다.이 접근방식은 퍼포먼스가 저하되어 일반적으로 Rosetta와 같이 범용 바이너리 또는 컴파일된 바이너리를 사용할 수 있을 때까지만 사용되는 잠정 솔루션으로 간주됩니다.

컴파일된 코드의 복사본을 여러 개 저장해야 하므로 범용 이진 파일은 단일 플랫폼 이진 파일보다 큽니다.그러나 실행 불가능한 리소스 중 일부는 두 아키텍처에 의해 공유되기 때문에 결과적인 범용 바이너리의 크기는 두 바이너리를 합친 것보다 작을 수 있습니다.또한 이들 2개의 복사본 중 1개만 실행을 위해 로드되기 때문에 추가 RAM이 필요하지 않습니다.

역사

유니버설 바이너리의 개념은 Mac OS X의 주요 아키텍처 기반인 NeXTSTEP의 "멀티 아키텍처 바이너리"에서 유래했습니다.NeXTSTEP은 하나의 실행 이미지를 Motorola의 m68k, Intelx86, Sun Micro시스템즈의 스파클 Hewclett여러 아키텍처에서 실행할 수 있도록 유니버설 바이너리를 지원합니다.NextSTEP 및 macOS는 범용 바이너리의 기반이 되는 바이너리 형식으로 마하-O 아카이브를 사용합니다.

애플은 앞서 1990년대 중반 68k 프로세서에서 PowerPC로 전환하는 과정에서 이와 유사한 기술을 사용했다.이러한 듀얼 플랫폼 실행 파일을 팻 바이너리라고 합니다.이것은 파일 사이즈가 큰 것을 말합니다.

Apple의 Xcode 2.1은 해당 릴리스의 새로운 기능인 이러한 파일 생성을 지원합니다.프로세서에 의존하지 않고 개발된 단순한 애플리케이션은 범용 바이너리로 컴파일하기 위해 거의 변경이 필요하지 않을 수 있지만 아키텍처 고유의 기능을 이용하도록 설계된 복잡한 애플리케이션은 상당한 변경이 필요할 수 있습니다.원래 다른 개발 도구를 사용하여 빌드된 애플리케이션의 경우 추가 수정이 필요할 수 있습니다.인텔 베이스의 Macintosh 컴퓨터의 도입과 유니버설 바이너리 형식의 서드파티제 애플리케이션의 제공이 지연되고 있는 것이 원인으로 지적되고 있습니다.애플이 이전에 발표한 일정보다 몇 달 앞서 인텔 기반 컴퓨터를 납품한 것도 이 격차의 한 요인이다.

Apple의 Xcode 2.4는 4개의 아키텍처 바이너리(Intel과 PowerPC 모두 32비트 및 64비트)를 만들 수 있도록 함으로써 범용 바이너리의 개념을 더욱 발전시켰습니다.따라서 단일 실행 파일이 모든 Mac OS X 머신의 CPU 기능을 최대한 활용할 수 있습니다.

범용 어플리케이션

많은 소프트웨어 개발자가 2005년 WWDC 이후 자사 제품의 범용 바이너리 업데이트를 제공하고 있습니다.2008년 12월 현재, Apple의 Web 사이트에는 7,500개 이상의 [6]범용 애플리케이션이 게재되어 있습니다.

2007년 4월 16일 Adobe Systems는 유니버설 바이너리 형식의 [7]응용 프로그램 스위트의 첫 번째 버전인 Adobe Creative Suite 3의 출시를 발표했습니다.

2006년부터 2010년까지 QuarkXPres, Apple의 Final Cut Studio, Adobe Creative Suite, Microsoft Office 2008, Shockwave Player 버전 11을 포함한 많은 Mac OS X 어플리케이션이 유니버설 바이너리 포맷으로 이식되었습니다.그 후 대부분은 인텔 전용 어플리케이션으로 만들어졌습니다.비유니버설 32비트 PowerPC 프로그램은 Mac OS X 10.4, 10.5 및 10.6을 실행하는 인텔 Mac에서 실행되지만 최적의 퍼포먼스는 아닙니다.이는 Rosetta에 의해 즉시 번역되어야 하기 때문입니다.Lion 이후는 Rosetta의 일부가 아니기 때문입니다.

iOS

Apple은 아키텍처 공존하는 여러 경우에 대해 기본적으로 iOS 애플리케이션용 유니버설 바이너리와 동일한 바이너리 형식을 사용했습니다. armv6-armv7-armv7s 전환 중에는 2010년 경, armv7-arm64 전환 중에는 2016년 경입니다.앱스토어는 바이너리를 자동으로 동기화합니다.[8]프랙티스는 개발자의 문제일 뿐이기 때문에 이 프랙티스에 대한 상호는 파생되지 않았습니다.

유니버설 2

2020년 6월 22일, Apple은 2020년 [9]macOS Big Sur를 시작으로 인텔 x86-64 기반 프로세서에서 ARM64 기반 Apple 실리콘으로 2년간 영구 전환을 발표했습니다.이러한 전환을 지원하기 위해 x86-64 기반 프로세서 또는 ARM64 기반 [5]프로세서에서 애플리케이션을 실행할 수 있도록 하는 새로운 Universal 2 바이너리가 도입되었습니다.

도구들

유니버설 바이너리를 처리(작성 또는 분할)하기 위한 주요 도구는lipo 명령어가 Xcode에 있습니다.macOS 및 다른 여러 Unix 유사 시스템에서 명령을 사용하면 마하-O 유니버설 바이너리를 식별하고 아키텍처 [10]지원을 보고할 수 있습니다.Snow Leopard의 System Profiler는 응용 프로그램 탭에 이 정보를 제공합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Firefox 4 for Mac OS X: Under the Hood". November 10, 2010. Retrieved March 3, 2017.
  2. ^ "Mac OS X Universal Logo: Guidelines for Mac OS X Universal Logo Licenses" (PDF). Apple Inc. June 2007. Retrieved October 18, 2013.
  3. ^ "Mac OS X: 64-bit kernel frequently asked questions". Apple Inc. October 4, 2012. Retrieved October 18, 2013.
  4. ^ "Does Mac OS X 10.7 "Lion" run on Macs with a 32-bit EFI? How does the performance of Mac OS X 10.7 "Lion" compare to Mac OS X 10.6 "Snow Leopard" in "real-world" tests? @ EveryMac.com". everymac.com. Kyle Media. Retrieved October 6, 2017.
  5. ^ a b Axon, Samuel (June 22, 2020). "This is Apple's roadmap for moving the first Macs away from Intel". Ars Technica. Retrieved June 23, 2020.
  6. ^ "Macintosh Products Guide: Universal Applications". Apple Computer. Retrieved December 22, 2008.
  7. ^ "Adobe Ships Creative Suite 3". Adobe Systems. April 16, 2007. Archived from the original on July 8, 2012. Retrieved October 18, 2013.
  8. ^ "lipo - iOS fat binaries and thinning out". Stack Overflow.
  9. ^ Amadeo, Ron (June 22, 2020). "Apple announces macOS 11, "Big Sur," with an emphasis on design". Ars Technica. Retrieved June 23, 2020.
  10. ^ stany (September 6, 2005). "Mac OS X: Trimming fat from Mach-O fat files". theconsultant.net. Retrieved October 18, 2013.

외부 링크