93

AppleはXcode4を搭載したSDK10.6のみを出荷しているため、Xcode4を使用したPPCアプリケーションの開発は不可能になりました。10.5、場合によっては10.4システムでも実行できるXcode4を使用してアプリケーションを開発することは可能ですが(SDK 10.6を選択しますが、展開ターゲット10.5または10.4)、少なくともSDK 10.5が必要なため、IntelMacでのみ実行されます。 PPCアプリケーションの構築。

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

最後になりましたが、AppleはXcode4からGCC 4.0のサポートも削除しました。これは、特定のソフトウェアを正しくビルドするために必要な場合があり、SDK 10.4を使用する場合、AppleはGCC4.2でソフトウェアをコンパイルすることを許可していません。問題が発生した場合、GCC4.2およびSDK10.6でビルドされたすべてのソフトウェアは、展開ターゲットが正しく設定され、MacOS 10.4で使用できない機能が使用されていない限り、MacOS10.4でも問題なく実行できます。

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

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

4

8 に答える 8

112

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

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

  1. すべての変更を最小限に抑えます。
    Xcodeのセットアップを可能な限りオリジナルに保ちたいと考えています。

  2. どうしても、ファイルにパッチを適用したり変更したりしないようにしてください。
    すべてのファイルをそのままにして、元のコンテンツを保持する必要があります。

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

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

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

前提条件

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

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

ステップ1:Xcode3をインストールする

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

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

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

ステップ2:Xcode4をインストールする

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

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

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

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

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:GCC4.0サポートの復元

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

SDK 10.4を使用するには、GCC 4.0を使用する必要がありますが、GCC4.2は機能しません。Appleは、GCC4.2はSDK10.4と互換性がないと主張している。まあ、私に言わせれば、これはデマだ。私はすでにこの制限を2回以上上書きしており、そのために最も小さな問題は発生しませんでした。SDK10.4を変更してXcodeでGCC4.2を使用できるようにするのは簡単ですが、私の目標はすべてのファイル変更を回避することだったので、GCC4.0サポートをXcodeに追加するだけです。これも良いことです。一部のプロジェクトは実際にGCC4.0に依存しています(たとえば、GCC 4.2には、有効なインラインアセンブリコードがエラーなしでコンパイルできないバグがいくつかありますが、同じコードはGCC4.0とGCC4.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でまだ選択できないという事実を除いて、完全なGCC4.0サポートを復元しました。これは、Xcode4にGCC4.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 /GCC4.0.xcplugin"。

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

ステップ5:GCC4.2のPPCサポートを復元する

AppleはXcode4でのみIntelプラットフォームをサポートしているため、すべてのGCC4.2ツールがPPCをサポートして構築されているわけではありません。PPCをサポートしていない重要なツールが1つあります。このツールは、「as」という名前で、GNUアセンブラです。GCC4.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が設計されていることを実行してください:このページの右上隅にある[質問する]をクリックして、新しい質問を作成します。そうすれば、コミュニティ全体がこれらの問題の解決に役立つ可能性があります。これは、問題がこのハッキングに直接(間接的にさえも)関連していない可能性があるためです。

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

ここに質問や問題を返信またはコメントとして投稿することは控えてください。それらを返信として投稿することは意味がありません。なぜなら、それらは返信ではなく、コメントを使用する以外に、人々があなたに返信する方法がないためです。コメントは、あなたの質問に対する適切な回答またはあなたに対する適切な解決策のための十分な余地を提供しない可能性があります問題。また、コメントとして投稿すると、スペースが非常に少なくなり、コメントにはツリーのような階層がないため、返信コメントの追跡が困難になります(さらに、適切な返信/ソリューションのためのスペースがほとんどありません)。ありがとうございました。

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

于 2011-03-17T00:39:33.543 に答える
15

Xcode4だけを使用するもう1つの簡単な方法である、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

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

于 2011-04-05T08:00:21.313 に答える
8

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

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

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

于 2011-08-12T04:54:43.407 に答える
4

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

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .
于 2011-03-21T16:54:46.347 に答える
3

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

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日より前の日付に戻す必要があります。そうしないと、インストール中にセキュリティ証明書の検証に失敗します。明らかに、インストール後に日付を安全に元に戻すことができます!

于 2012-07-07T19:35:01.737 に答える
2

誰かがXcode4.3と4.5で古いSDKとPPCコンパイラを復元する必要がある場合に備えて、これは私が思いついたスクリプトです。スクリプトの最初に、XcodeアプリバンドルへのパスとXcode3.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.6SDKをシンボリックリンクする必要はありません。

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

于 2012-06-12T18:56:22.327 に答える
2

FrédéricDevernayには、 xcodelegacyと呼ばれるGitHubプロジェクトがあります。これは、Xcode 5.1.1で私にとって素晴らしい機能を果たし、ダウンロードするだけで、それを実行するための作業はほとんど必要ありません。

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

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

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

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

于 2014-10-26T20:48:04.913 に答える
1

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

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

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

于 2011-03-18T05:47:30.197 に答える