Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

アプリケーションの強制翻訳実行

アプリケーションが「何を翻訳できるか」で説明している基準を満たしているとすると、PowerPCバイナリのみのアプリケーションはインテルベースのMacintoshでは自動的に翻訳されて実行されます。テスト用に、Universal BinaryのあるアプリケーションをインテルベースのMacintosh上でPowerPCバイナリとして強制的に起動できる方法がいくつかあります。

このセクションでこれらの各方法について説明します。

「情報」ウインドウで設定する

アプリケーションの「情報」ウインドウにある「Rosettaを使って開く」オプションを選択することで、インテルベースのMacintoshコンピュータで実行するバイナリを手動で設定できます。このオプションを設定するには、アプリケーションアイコンをクリックし、CommnadキーとIキーを同時に押して「情報」ウインドウを開きます。Figure A-1に示すように設定します。


Figure A-1  「計算機」アプリケーションの「情報」ウインドウ

Figure A-1 「計算機」アプリケーションの「情報」ウインドウ

「ターミナル」アプリケーションを使う

コマンドラインツールを翻訳して実行するには、「ターミナル」で次のように入力します。

ditto -arch ppc tool /tmp/<ツール名>
/tmp/tool

プロパティリストを変更する

「Rosettaを使って開く」オプションのデフォルト設定を行うには、アプリケーションバンドルのInfo.plistに次のキーを追加します。

<key>LSPrefersPPC</key>
<true/>

このキーは、アプリケーションをPowerPCバイナリとして起動し、「Rosettaを使って開く」チェックボックスを選択することをシステムに知らせます。出荷時にネイティブでないプラグインを利用するアプリケーションを出荷する場合は、これが役に立つでしょう。

sysctlbyname関数を使う

Listing A-2にあるexec_affinityルーチンは、従属起動されるプロセスに推奨されるCPU型を制御します。forkexecを使用して、1つのアプリケーションからアプリケーションを起動している場合、このルーチンが役に立つでしょう。

ルーチンは、「sysctl.proc_exec_affinity」文字列を渡してsysctlbyname関数を呼び出し、CPU型を指定する定数を渡しています。CPU_TYPE_POWERPCを渡し、Universal BinaryのPPC実行可能ファイルを起動します(sysctlbynameの詳細については、Mac OS X Man Pagesを参照してください)。

Listing A-2  従属起動されるプロセスに推奨されるCPUの型を制御するルーチン

cpu_type_t exec_affinity (cpu_type_t new_cputype)
{
    cpu_type_t ret;
    cpu_type_t *newp = NULL;
    size_t sz = sizeof (cpu_type_t);
 
    if (new_cputype != 0)
        newp = &new_cputype;
 
     if (sysctlbyname("sysctl.proc_exec_affinity", 
            &ret, &sz, newp, newp ? sizeof(cpu_type_t) :0) == -1) {
        fprintf(stderr, "exec_affinity:sysctlbyname failed:%s\n",
                strerror(errno));
        return -1;
    }
    return ret;
}


< Previous PageNext Page >


Last updated: 2006-03-08




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice