Xpc 4にppc / ppc64と10.4 / 10.5 SDKの完全なサポートを復元するにはどうすればよいですか?


93

AppleはSDK 10.6とXcode4のみを同梱しているため、Xcode4でのPPCアプリケーションの開発は不可能になりました。Xcode4を使用してアプリケーションを開発することも可能ですが、10.5や10.4システムでも実行できます(SDK 10.6を選択しますが、デプロイメントターゲット10.5または10.4を選択します)。これらのアプリケーションはIntel Macでのみ実行できます。 PPCアプリケーションの構築。

さらに、一部のまれなケースがあります。たとえば、完全なプラットフォームサポートのために10.6より前のSDKに対してビルドする必要がある場合です。たとえば、非推奨の機能が10.6 SDKから完全に消えたが、それを使用する必要があり、ダイナミックリンクが必要ない場合それらのケースでは常に最良のオプションです。また、以前のSDKにリンクすると、以前のOSバージョンとの非互換性が発生し、使用できないため、使用しようとしない機能が利用できなくなり、使用しようとするとコンパイラエラーまたはリンカーエラーがすぐに発生するため、開発が容易になる場合があります。

最後に重要なことですが、AppleはXcode4からGCC 4.0のサポートも削除しました。これは、特定のソフトウェアが正しくビルドするために必要な場合があり、SDK 10.4を使用している場合、AppleはソフトウェアをGCC 4.2でコンパイルすることを決して許可していません。 GCC 4.2およびSDK 10.6で構築されたすべてのソフトウェアは、デプロイメントターゲットが正しく設定され、MacOS 10.4で使用できない機能が使用されていない限り、問題なくMac OS 10.4でも実行できます。

もちろん、いつでもXcode4の隣にXcode3を並行してインストールできますが、それはXcode4の(素晴らしい?)新機能をすべて忘れて、古いXcode3 IDEで作業を続ける必要があることを意味します。新しいプロジェクトと同じIDE内ですべての古いプロジェクトを管理し、利用可能なすべての新機能を利用できれば、はるかに良いでしょう。すべてのプロジェクトが10.6またはIntelを近い将来にのみ作成できるわけではありません。さらに、私は、本当に必要になるよりも早く、古いプラットフォームのサポートを廃止することには厳しく反対しています。

この機能をXcode4に復元できますか?

回答:


111

簡単な答えは次のとおりです。はい、できます。

それがどのように行われるか」の部分に入る前に、ここに私のパッチ/ハック/修正に関するいくつかのメモがあります。当初からの主な目標は次のとおりです。

  1. すべての変更を最小限に抑えます。
    Xcodeの設定をできるだけオリジナルにしたいと考えています。

  2. 必ず、ファイルへのパッチの適用や変更を避けてください。
    すべてのファイルに手を付けずに、元のコンテンツを保持してください。

  3. どうしても必要な場合を除いて、ファイルの移動やコピーは避けてください。

私はそれらすべての目標を維持することができました。ほとんどすべてがシンボリックリンクを作成することによって行われます。置き換える必要があるのは既存のシンボリックリンクが1つだけであり、念のため、置き換える前にバックアップします。

端末操作の専門家でない場合は、タイプミスを避けるために、私の返信からすべての端末コマンドを端末にコピーして貼り付けることを強くお勧めします。間隔、引用符、特に大文字の使用も重要になる可能性があることに注意してください。それらを1行ずつコピー/貼り付けします。一度に1行を超えないようにし、貼り付けられた各行の後でReturnキーを押してコマンドを実行します。何らかの操作でパスワードの入力を求められた場合、これは現在ログインしている管理者ユーザーのパスワードになります(入力中にキーストロークは表示されませんが、これは正常です。心配しないで、パスワードを入力し続けてReturnキーを押してください。re -タイプミスがあった場合は、もう一度試してみてください)。

前提条件

開始する前に、次の条件が満たされていることを確認してください。

  • 管理者ユーザーとしてログインしています。
  • Terminal.app(アプリケーション/ユーティリティ)を起動し、ターミナルウィンドウを開きます。
  • Xcode3(例:3.2.5)およびXcode4ディスクイメージ(DMG)のコピーまたはインストーラーが利用可能です。
  • Xcodeのいずれかのバージョンが既にインストールされている場合は、最初アンインストールすることを検討してください。そうすれば、新しいクリーンなセットアップから始めることができます。Xcodeをアンインストールしても、設定、配色、キーバインドのカスタマイズは削除されません。Xcodeバージョン(3でも4でもない)が現在インストールされていないシステムから始めるのが理想的です。

ステップ1:Xcode3のインストール

重要:Xcode3の「システムツール」または「Unix開発」パッケージをインストールしないでください。
Mac OS X 10.4 SDK」または「ドキュメント」をインストールするかどうか」のです。それがiOS SDKを備えたXcode3である場合、それらをインストールするかどうかもあなた次第です。

インストール先のフォルダは自由に選択できます。このガイドでは、 " / Xcode3」を選択しましたが、別のものを選択しても。それに応じて、すべての端末コマンドを必ず変更してください。

ここに記載されている手順の順序は通常それほど重要ではありませんが、手順1と手順2を入れ替えないことを強くお勧めします。Xcodeは常に、選択した宛先フォルダーの外部にいくつかのファイルをインストールし、最終的には信頼します。ディスク上のこれらのファイルのXcode4バージョン。Xcode4の前にXcode3をインストールすると、必要に応じてXcode4がこれらのファイルを確実に上書きするようになります。手順1と2を一度入れ替えると、結局、間違った順序に関連していると思われるかなり奇妙な問題が発生しました(確かに言うことはできませんが、正しい順序で再インストールした後、問題はなくなりました)。

ステップ2:Xcode4のインストール

好きなパケットを選んでください。「システムツールのインストール」をことをお勧めしが、厳密に必要というわけではありません(ほとんどの人は遅かれ早かれその機能を見逃すでしょう)。

繰り返しますが、好きなターゲットフォルダを自由に選択してください。このガイドでは、通常のターゲットフォルダーを選択しました " / Developer」を選択しました。別のする場合は、それに応じてすべてのターミナルコマンドを変更してください。

ステップ3:10.4 / 10.5 SDKサポートの復元

ターミナルウィンドウに切り替えて、次のコマンドを実行します。

cd / Developer / SDKs
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk。
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk。

もちろん、ステップ1でSDK 10.4もインストールした場合は、10.4uに対してのみコマンドを実行します。

これは、SDK 10.5(場合によっては10.4)をXcode4の選択リストに戻すのに十分です。よろしければ試してみてください。Xcode4を起動し、プロジェクトを開いて、選択したSDKを変更してみてください。それは簡単でしたね?次の手順に進む前に、必ずXcode4(ウィンドウだけでなくアプリケーション)を必ず閉じてください。

ステップ4:GCC 4.0サポートの復元

MacOS 10.4 SDKをインストールしていない場合、または使用する予定がない場合は、この手順をスキップして、手順5に進んでください。

SDK 10.4を使用するには、GCC 4.0を使用する必要があります。GCC4.2は機能しません。Appleは、GCC 4.2はSDK 10.4と互換性がないと言っていますが、私に尋ねれば、これはデマです。私はすでにこの制限を複数回上書きしており、それが原因で最も小さな問題が発生することはありませんでした。XcodeでGCC 4.2を使用できるようにSDK 10.4を変更するのは簡単ですが、私の目標はすべてのファイル変更を回避することでしたので、GCC 4.0のサポートをXcodeに追加するだけです。これもまた良いことです。一部のプロジェクトは本当にGCC 4.0に依存しています(たとえば、GCC 4.2には、有効なインラインアセンブリコードをエラーなしでコンパイルできないバグがありますが、同じコードがGCC 4.0およびGCC 4.4で問題なくコンパイルされます)。

ターミナルに戻る:

cd / Developer / usr / bin
sudo ln -s /Xcode3/usr/bin/*4.0*。

cd / Developer / usr / libexec / gcc / powerpc-apple-darwin10
sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1。

現在、GCC 4.0がXcode4で選択できないという事実を除いて、GCC 4.0の完全なサポートを復元しました。これは、Xcode4にGCC 4.0コンパイラプラグインがなくなったためです。幸い、Xcode3プラグインはXcode4でも動作しますが、位置だけが根本的に変更されています。Appleはこれらのプラグインをバンドルの奥深くに隠し、そこにあるプラグインのみが機能するようで、それらを古い位置に配置しても効果がないようです。

cd / Developer / Library / Xcode / PrivatePlugIns
cd Xcode3Core.ideplugin / Contents / SharedSupport / Developer / Library / Xcode / Plug-ins
sudo ln -s "/ Xcode3 / Library / Xcode / Plug-ins / GCC 4.0.xcplugin"。

Xcode4を再度起動し、プロジェクトを開いてコンパイラを選択してみます。GCC 4.0をリストに戻す必要があります。これで、SDK 10.4または10.5、GCC 4.0を実際に選択できるようになり、PPCバイナリをビルドしても問題はありません。「アーキテクチャ」のビルド設定で「その他...」を選択し、手動で「ppc」と入力してから、「有効なアーキテクチャ」を変更して「ppc」も含めるようにします。GCC 4.2とSDK 10.5を使用してPPCバイナリをビルドしようとしても失敗することを除いて、ほぼ完了です。

ステップ5:GCC 4.2のPPCサポートの復元

AppleはXcode4のIntelプラットフォームのみをサポートしているため、すべてのGCC 4.2ツールがPPCサポートでビルドされているわけではありません。PPCをサポートしていない重要なツールが1つあります。このツールの名前は「as」で、これはGNUアセンブラーです。GPC 4.2でppc / ppc64バイナリをコンパイルするには、ppc / ppc64をサポートする " as "バージョンを使用する必要があります。これは、シンボリックリンクで置き換える前に、最初に脇に移動する(バックアップコピーを作成する)唯一のファイルです(実際にはシンボリックリンクでもあります)。

cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s / Xcode3 / usr / bin / as。

ステップ6:ステップ6はありません

それはすべての人々です。それがどれほど簡単であったかを考えると、AppleがSDK 10.4 / 10.5、ppc / ppc64、またはGCC 4.0のサポートを欠かさなかったことは想像に難くありません。

この設定が私と同じように機能することを願っています。私はすべての古いプロジェクトをXcode4でコンパイルできましたが、検索パスをあちこちに変更する必要があることを除いて、大きな変更はありません。

PS:
私がここで自分の質問に答えるのは奇妙に見えるかもしれませんが、この問題を自分で解決する方法を私が見つけたので、コミュニティに知識を共有したいと思います。これは、すべてのMacOS開発者がいます。この質問は非常に多くの場所で何度も尋ねられており、これまでのところ、同様の修正を考えている人を見たことはありません。富を共有し、知識を広めるなど、あなたは私の意味を知っています。


それでも問題/質問がある場合:

このトピックに関して追加の質問がある場合、または古いプロジェクトを正しくビルドするのに問題がある場合は、Stack Overflowの設計に従ってください。このページの右上隅にある[Ask Question]をクリックして、新しい質問を作成してください。そうすれば、コミュニティ全体がこれらの問題を解決するのに役立ちます。問題がこのハックに直接(間接的にさえ)関係しているとは限らないためです。

質問の最初にこのハックを適用したという事実について言及することをお勧めします。たぶん、あなたはこの質問に直接リンクして、このハックを聞いたことがない人でも簡単に調べられるようにしたいと思うかもしれません。そうしないと、SDK 10.4 / 10.5、PPC、またはGCC 4.0とXcode4の組み合わせについて言及したときに、ほとんどの人がかなり混乱します。このハックについて言及し忘れた場合、まともな返信ではなく、ばかげたコメントが返される可能性があります。

質問または問題を返信またはコメントとしてここに投稿しないでください。それらは返信ではなく、他の人があなたに返信する方法がなく、コメントを使用する方法がないため、それらを返信として投稿しても意味がありません。コメントは、質問に対する適切な返信や適切な解決策を提供するための十分な余地を提供しない場合があります問題。コメントとして投稿することは、ごくわずかなスペースに制限されることを意味します。コメントにはツリーのような階層がないため、返信コメントの追跡は難しくなります(さらに、適切な返信/ソリューションのための小さなスペースを提供します)。ありがとうございました。

もちろん、他の種類のコメントや元の質問へのより良い返信はいつでも歓迎です;-)


6
ここに賛成票があります。残りのXcode3をアンインストールできるようにするために、古いSDKとコンパイラファイルをシンボリックリンクするのではなく、おそらくコピーします。Xcode4が大好きだからではありません。単にディスク容量が必要だからです。ありがとう!
IvanVučica11年

これを機能させることができません。私のSOの質問を参照してください:stackoverflow.com/questions/5409860/...
paleozogt

これに加えて、i686ターゲット用のgcc 4.0ビルドを取得するには、以下を実行する必要がありました。sudo ln -s /Xcode3/usr/libexec/gcc/i686-apple-darwin10/4.0.1 / Developer / usr / libexec / gcc / i686-apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / Developer / usr / lib / gcc / i686- apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / usr / lib / gcc / i686-apple-darwin10 /
マークキャリー

2
この行for SRC_FILE in /Xcode3/usr/bin/*4.0*; do sudo ln -s "$SRC_FILE" .; doneは、次のように簡略化できますsudo ln -s /Xcode3/usr/bin/*4.0* .
アダム・ローゼンフィールド、2011

1
@cullub developer.apple.comに移動し、開発 IDでログインし、「SDK」を選択し、下にスクロールして「Xcode」を選択し、「ダウンロード」を選択し、下にスクロールして「追加ツール」を選択し、「Xcode 3」を検索します検索フィールド。
Mecki

15

Xcode4のみを使用する別の簡単な方法であるXcode3は不要になりました。

$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin

編集:

Xcode 4.1の場合

sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc

PowerPCでのみgcc-4.2を使用できます。また、10.7 SDKではPowerPCがサポートされなくなったため、「-isysroot /Developer/SDKs/MacOSX10.6.sdk」オプションが必要です。


3
LOLなので、AppleはiOSコンパイラでPPCをサポートします。まだ賛成票に値する。
メッキ

上記に比べて非常にハック的でシンプルで、最低限必要なものです。
Diziet

Xcode 4.1でPowerPCツールチェーンを有効にします。gcc-4.2のみ。10.7 SDKにはPowerPCのヘッダーがなくなったため、「-isysroot /Developer/SDKs/MacOSX10.6.sdk」オプションが必要です。
坂本一樹2011

stackoverflow.com/questions/11989007は、10.6 SDKの取得に関連しています。つまり、Xcode 4.1にあります
fommil 2013

8

このページ、Mac OS Xヒント、splhack.org、およびここで引用したその他の情報源からすべての情報を収集し、PPCとGCC 4.0のいずれかのサポートを復元するプロセスを自動化する一連のBASHスクリプトをまとめました。 XCode 3のインストールまたはXCode 4独自のiPhoneプラットフォームファイル。

いつものように、注意して使用してください!修正や改善を投稿してください。これらのスクリプトは、この投稿の時点で私のシステムでのみテストされています。

GitHubからダウンロードできます。


うわー、かなりかっこいい:-)自分でそのようなスクリプトを作成したかったのですが、そのための時間はありませんでした。共有していただきありがとうございます。
メッキ

4

コマンドラインからも同様にgccを動作させたい場合は(上記と同様)、次のことも行う必要があります。

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .

3

これは、AppStoreのXcode 4.3.2(すべてがApp Bundleにすべてが含まれているバージョン)でも動作します。元のヒントと同様に、最初にXcode 3.2.6をインストール*してから、AppStoreからXcode 4をダウンロードします。次に、次のシンボリックマジックを実行します。

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
ln -s /Developer/Xcode3.2.6/SDKs/MacOSX10.5.sdk .
cd /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/bin/
ln -s /Developer/Xcode3.2.5/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g* .
mv powerpc-apple-darwin10-llvm-gcc-4.2 powerpc-apple-darwin11-llvm-gcc-4.2
mv powerpc-apple-darwin10-llvm-g++-4.2 powerpc-apple-darwin11-llvm-g++-4.2

最後の2行は、シンボリックリンクでdarwin10をdarwin11に名前変更しています。OSXの将来のバージョンでは、これを適切に更新する必要があると思います。

  • Xcode 3.2.xをLionにインストールするには、Xcodeディスクイメージをマウントし、ターミナルを開いて、コマンドを入力します(デフォルトのシェルを変更した場合は、bashまたは同等のコマンドを使用します)。

    export COMMAND_LINE_INSTALL = 1 open "/ Volumes / Xcode and iOS SDK / Xcode and iOS SDK.mpkg"

また、時計を2012年3月31日より前の日付に戻す必要があります。そうしないと、インストール中にセキュリティ証明書が検証に失敗します。あなたは明らかにインストール後に日付を安全に戻すことができます!


2

Xcode 4.3と4.5で誰かが古いSDKとPPCコンパイラを復元する必要がある場合に備えて、これは私が思いついたスクリプトです。スクリプトの先頭で、XcodeアプリバンドルへのパスとXcode 3.2.6インストールへのパスを設定する必要があることに注意してください。

#!/bin/bash

XCODE="/Applications/Xcode45-DP1.app"
XCODE3="/Xcode3"

# restore SDKs
cd "$XCODE/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
sudo ln -s "$XCODE3/SDKs/MacOSX10.4u.sdk" .
sudo ln -s "$XCODE3/SDKs/MacOSX10.5.sdk" . 
sudo ln -s "$XCODE3/SDKs/MacOSX10.6.sdk" . 

# restore gcc 4.0
cd "$XCODE/Contents/Developer/usr/bin"
sudo ln -s "$XCODE3/usr/bin/"*4.0* .
sudo ln -s "powerpc-apple-darwin10-g++-4.0.1" "powerpc-apple-darwin11-g++-4.0.1"
sudo ln -s "powerpc-apple-darwin10-gcc-4.0.1" "powerpc-apple-darwin11-gcc-4.0.1"

# restore Xcode option
cd "$XCODE/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
sudo ln -s "$XCODE3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" . 

Xcode 4.3が付属しているため、Xcode 4.3を使用している場合は10.6 SDKをシンボリックリンクする必要はありません。

また、ファイル名の競合が多数発生しているため、スクリプトはgcc 4.2を復元しません。私の目標はPPCコンパイラを復元することであり、4.0で十分です。


2

フレデリック・Devernayと呼ばれるGitHubのプロジェクトがあるxcodelegacyをのXcode 5.1.1で私のために素晴らしい作品、そしてそれは、単にいくつかのダウンロードを軌道に乗るためにはほとんどの作業を必要とします。

彼のプロジェクトを使用して、GCC 4.0を使用して10.4 SDKでコンパイルされたすべてのYosemiteで実行されているXcode 5.1.1内から、ppcとi386アーキテクチャの両方を含むユニバーサルバイナリを作成できました。

作成したユニバーサルバイナリが10.5 LeopardとYosemite自体で正常に機能することを確認しました。

ここのホームページ:http : //devernay.free.fr/hacks/xcodelegacy

ここのGitハブプロジェクト:https : //github.com/devernay/xcodelegacy


1

これらのファイルをXCode 4実装にインストールするだけのパッケージがあると便利です。(またはtarball)。

参考:Xcode3の3.2.6には、ppcアーキテクチャのasは含まれていません。しかし、私は私のコンピュータにLeopardのバックアップを持っていました。だから私はそれをコピーしました、うまくいくようです。(/ usr / libexec / gcc / darwin / ppc / asを使用してください)。

gccとオープンソースの両方を考慮すると、再配布できない可能性があるのはxcodeプラグインと10.4 SDKだけです。


ライセンスに関する質問の専門家ではありません。「as -v」は「Apple Incバージョンcctools-795〜45、GNUアセンブラバージョン1.38」を示しますが、Appleが「as」のソースコードを変更した場合でも、GPLの下でライセンスされます(変更されたGPLコードは自動的にGPLコードをもう一度)、したがって、GPLで許可されている場合は、問題ありません。
Mecki

さて、「として」を置き換える必要がある理由は間違っていたと思います。Xcode 3.2.6の "as"はIntelだけですが、同様に機能するようですが、ppcアセンブリ出力を作成できるようです。最初の返信を修正します。これを指摘してくれてありがとう!
メッキー

実際には、少なくともコマンドラインからはそうではありません。Leopardのバックアップから手に取るまで、それは文句を言い続けた。
ジェイソンケニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.