Universal Binary(ユニバーサルバイナリ)は、Appleが開発した、互換性のない複数種類のCPU(例えばPowerPCx86、もしくはx64ARM64など)でソフトウェアを動作させることができるようにするためのバイナリである。自社で販売しているパーソナルコンピュータMacintosh」に搭載されているCPUを、PowerPCからインテルx86に移行するにあたって発表された。さらにmacOSにおける32ビット64ビットの過渡期(当時の名称はMac OS X)においては、32ビットバイナリと64ビットバイナリを混在させるためにも利用されている。

ユニバーサルバイナリに対応したアプリケーションソフトウェアであれば、ユーザー側は実行環境のCPUアーキテクチャを気にすることなく(CPUに応じた個別のパッケージをダウンロードすることなく)、単一のアプリケーションパッケージを統一的に利用し、かつ(Rosettaのような)変換層を介さずCPUのネイティブ性能を発揮させることができる。欠点としては、各アーキテクチャに応じた複数のバイナリを含むため、単一のアーキテクチャ専用のバイナリと比べるとファイルサイズが増大してしまうことなどが挙げられる。

インテル系プロセッサ向けx86_64Appleシリコン向けarm64のネイティブコードを含むバイナリフォーマットは「Universal 2」と呼ばれ、WWDC 2020で「Rosetta 2」とともに発表された[1][2][3]

lipo

編集

macOSではlipoというコマンドラインツールが標準提供されている[4]。このツールを使用することで、複数の異なるアーキテクチャ向けバイナリを結合してユニバーサルバイナリを生成したり、ユニバーサルバイナリに格納されているアーキテクチャの種別を確認したり、特定のアーキテクチャ向けバイナリのみを取り除いたりすることができる。

脚注

編集

関連項目

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

Carbon (API)

Carbonが大半だったが、開発環境が最適化されていくにつれてMach-O Carbonがほとんどとなってきた。(Xcodeの利用による)Mach-O化はUniversal Binary化には必須である。なお、CocoaはCarbonと必ずしも対立するものではなく、当初はCarbonベースのライブラリをラップしてCoc

Xojo

全てのプラットフォーム用の実行バイナリを出力することができるため、双方向のクロスプラットフォーム開発が可能である。 なお、Xojoは、Universal Binaryアプリケーションを作成することのできる、サードパーティー開発ツールのひとつである。 Xojoの主な機能は以下のとおり。

MacOS Server

2005年4月 - Mac OS X Server v10.4 (Tiger Server) が発売された。 2006年8月 - Universal Binary版 Mac OS X Server v10.4.7が発売された。 Mac OS X Server v10.4系列の最終バージョンは、10

Adium

X" と改名した上で、バージョン0.50とし、「1.0の半分ぐらいの完成度」ということを表した。 インテルベースのMacで動作するよう Universal Binaryでコンパイルされた最初のバージョンはAdium X 0.88だった。Adium X 0.89.1までリリースすると、今度は名前を再びA

ILife

'05」発売 2006年1月10日 - 「iLife '06」発売 PowerPC とインテル両プロセッサのMacでネイティブ動作するUniversal Binary化。iWebがセットに加わる。 2007年8月7日 - 「iLife '08」発売 2009年1月29日 - 「iLife '09」発売

ICab

2、68k版のMacintoshに対応する。 開発は既に終了したが、ダウンロードや登録を行うことは可能である。 Mac OS Xに対応した初めてのiCabである。Universal Binary化されることにより、Intel Macにも対応した。 レンダリングエンジンでは、CSS 2及びUnicodeをサポートした。 最終版のiCab

Camino

ンジンを搭載するFirefoxと比較されることが多く、拡張性はFirefoxより劣るものの速度面ではCaminoが圧倒的有利とされる。Universal Binaryで配布され、インテル製CPU搭載Macintoshにも対応している。名称はスペイン語の「道」に由来する。 CaminoはMozilla

File (UNIX)

application/x-gzip; charset=binary $ file data.ppm data.ppm: Netpbm PPM "rawbits" image data $ file /bin/cat /bin/cat: Mach-O universal binary with 2 architectures