web-dev-qa-db-ja.com

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

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

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

最後になりましたが、AppleはXcode4からGCC 4.0のサポートも削除しました。これは特定のソフトウェアを正しく構築するために必要な場合があります。Apple 10.4、これが実際に問題を引き起こすとはほとんど信じていないが、GCC 4.2およびSDK 10.6で構築されたすべてのソフトウェアは、展開ターゲットが正しく設定され、機能がない限り、Mac OS 10.4でも問題なく実行できるためMacOS 10.4では利用できないものが使用されています。

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

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

93
Mecki

簡単な答えは:はい、できます!

方法」の部分に進む前に、パッチ/ハック/修正に関するいくつかの注意事項を示します。当初からの主な目標は次のとおりです。

  1. すべての変更を最小限に抑えてください。
    Xcodeのセットアップはできる限りオリジナルのままにしておきます。

  2. 必ず、ファイルへのパッチの適用や変更を避けてください。
    すべてのファイルに手を加えず、元のコンテンツを保持する必要があります。

  3. どうしても必要な場合を除き、ファイルを移動したりコピーしたりしないでください。

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

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

前提条件

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

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

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

重要:「System Tools」または「Unix Developmentをインストールしないでください "Xcode3のパッケージ。
Mac OS X 10.4 SDK」および/または「Documentation」をインストールするかどうかは君は。それがiOS SDKを備えたXcode3である場合、それらをインストールするかどうかもあなた次第です。

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

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

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

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

繰り返しますが、好きなターゲットフォルダを自由に選んでください。このガイドでは、通常のターゲットフォルダー「/ 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と互換性がないと主張しています。私はすでにこの制限を何度も上書きしましたが、それが原因で最も小さな問題があったことはありませんでした。 SDK 10.4を変更してXcodeでGCC 4.2を使用できるようにするのは簡単ですが、私の目標はすべてのファイルの変更を避けることでした。そのため、GCC 4.0のサポートをXcodeに戻すだけです。一部のプロジェクトは実際にGCC 4.0に依存しています(たとえば、GCC 4.0とGCC 4.4で同じコードが問題なくコンパイルされる一方で、エラーなしで有効なインラインアセンブリコードをコンパイルできないバグがGCC 4.2にあります)。

ターミナルに戻る:

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バイナリをビルドしても問題はないはずです。 「その他...」を「Architecture」ビルド設定に選択し、「」を手動で入力ppc」、次に「Valid Architectures」を変更して「ppc」も含めます。 GCC 4.2およびSDK 10.5を使用してPPCバイナリをビルドしようとすると失敗することを除いて、ほぼ完了です。

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

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

質問の最初にこのハックを適用したという事実に言及することをお勧めします。この質問に直接リンクして、このハックを聞いたことがない人でも簡単に検索できるようにしたいかもしれません。そうしないと、SDK 10.4/10.5、PPC、またはGCC 4.0をXcode4と組み合わせて言及すると、ほとんどの人がかなり混乱します。このハックについて言及するのを忘れると、まともな返信の代わりにかなり愚かなコメントを受け取るかもしれません。

ここに質問や問題を返信またはコメントとして投稿しないでください。返信としてそれらを投稿することは意味がありません。返信ではなく、コメントを使用する以外にユーザーが返信する方法がありません。問題。また、コメントとして投稿することは、ごくわずかなスペースに制限されることを意味し、コメントにはツリーのような階層がないため、返信コメントの追跡が困難になります(さらに、適切な返信/解決策を提供する余地はほとんどありません)。ありがとうございました。

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

111
Mecki

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

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

15
Kazuki Sakamoto

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

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

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

8
Scott Lahteine

Gccをコマンドラインからも機能させるには(上記と同様)、次のことも必要です。

cd /usr/libexec/gcc/powerpc-Apple-darwin10/4.2.1
Sudo mv as as.bak
Sudo ln -s /Xcode3/usr/bin/as .
4
jas

これは、AppStoreのXcode 4.3.2(すべてがAppバンドルに含まれているバージョン)でも機能します。元のヒントのように、最初に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に名前変更します-OS Xの将来のバージョンでは、必要に応じてこれを更新する必要があります。

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

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

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

3
Avram

FrédéricDevernayには、xcodelegacyと呼ばれるGitHubプロジェクトがあり、Xcode 5.1.1で素晴らしい動作をします。 。

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

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

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

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

2
Aidan

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
Stephen Chu

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

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

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

1
Jason Kenney