第13回 Universal Binary【後編】:Undocumented Mac OS X(4/4 ページ)
NeXTのMulti Architecture Binaryそのものと言える技術「Universal Binary」。前回に引き続き、Universal Binaryの詳細を解説していこう。
コラム PowerPCとIntel CPUで異なるターゲットSDKを使用する
本文中で説明した方法は、PowerPC向けコードとIntel CPU向けコードが、同じバージョンのMac OS Xをサポートする場合に特化されている。Intel CPU向けのMac OS Xは10.4.4以降しか存在せず*、一方Mac OS X 10.3(Panther)を使用するユーザーはまだまだ多い。せっかくUniversal Binaryなのに対象バージョンを10.4以降のみとしたり、10.3とそれ以前のPowerPC版と10.4以降を別ファイルにするのではありがたみが半減する。現実的なアプリケーションとするためには、PowerPC向けにはターゲットSDKにMac OS X 10.3.9を、Intel CPU向けにはMac OS X 10.4.4を使うようにするべきであろう。
Xcode付属のドキュメントである「Cross-Development Pro
gramming Guide」の「クロス開発とUniversal Binary」の項目で、その方法が説明されている。手順だけをザッと述べると次のとおりだ。
- プロジェクトを選択し、メニューから[情報を見る]を選択、情報パネルを開く
- 「ビルド」タブを選択
- パネル下部の[+]ボタンを押し、リストAにある設定を追加する(図A)
設定 | 意味 | 値の例 |
---|---|---|
GCC_VERSION_i386 | コンパイルに使うGCCのバージョンを指定 | 4.0 |
GCC_VERSION_ppc | コンパイルに使うGCCのバージョンを指定 | 3.3 |
MACOSX_DEPLOYMENT_TARGET_i386 | ターゲットにするMac OS Xのバージョンを指定 | 10.4 |
MACOSX_DEPLOYMENT_TARGET_ppc | ターゲットにするMac OS Xのバージョンを指定 | 10.3 |
SDKROOT_i386 | ターゲットSDKのパスを指定 | /Developer/SDKs/MacOSX10.4u.sdk |
SDKROOT_ppc | ターゲットSDKのパスを指定 | /Developer/SDKs/MacOSX10.3.9.sdk |
必須項目は、「MACOSX_DEPLOYMENT_TARGET_<アーキテクチャ名>」と「SDKROOT_<アーキテクチャ名>」の2点だ。前者はビルドツール群にターゲットとなるMac OS Xのバージョンを伝え、後者はターゲットSDKのパスを伝える。
開発言語としてC++もしくはObjective-C++を使用している場合は、必ず「GCC_VERSION_<アーキテクチャ名>」も併せて指定する。GCC 4.0ではC++のABIが変更されているため、C++のソースがある場合、10.4以前で動作するバイナリを生成できないからだ。Carbonベース、あるいはQuickTimeを使ったアプリケーション、そしてIOKitを用いたデバイスドライバなどでC++は使われている。それらのソフトウェアを開発している場合は注意しよう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
Intel CPU向けのMac OS Xは10.4.4以降しか存在せず
Intel CPUを搭載したMacが発表されるまでの間、開発者向けの開発・評価用にDTK(Development Transition Kit)という、Pentium 4を搭載したマシンが貸与されており、そこで動作するMac OS Xは10.4.1〜10.4.3であったとされている。ただし、DTK版は正規のバージョンではなく、貸与された機材とともに回収されているため、ここでは考慮していない。
本記事は、オープンソースマガジン2006年5月号「Undocumented Mac OS X」を再構成したものです。
関連記事
- 連載第1回 initを置き換えるlaunchd【前編】
UNIX使いに真のMACPOWERを! 本連載では、UNIX使いに向け、UNIX系OSとしてのMac OS Xを解説していく。記念すべき第1回では、initに代わるものとしてMac OS X Tigerで採用された、launchdを紹介しよう。 - 連載第2回 initを置き換えるlaunchd【後編】
- 連載第3回:plist(プロパティリスト)とFoundation【前編】
- 連載第4回:plist(プロパティリスト)とFoundation【後編】
- 連載第5回:OpenDirectory
- 連載第6回:迷走の痕跡を抱えるMac OS XのOpenDirectory
- 連載第7回:HFS、HFS Plusの基本的概念【前編】
- 連載第8回:HFS、HFS Plusの基本的概念【中編】
- 連載第9回:HFS、HFS Plusの基本的概念【後編】
- 連載第10回:HFS Plus独自の機能【前編】
- 連載第11回:HFS Plus独自の機能【後編】
- 連載第12回:Universal Binary【前編】
Copyright © ITmedia, Inc. All Rights Reserved.