1. ホーム
  2. xcode

[解決済み] Xcode 4でppc/ppc64と10.4/10.5 SDKの完全なサポートを復元するにはどうしたらいいですか?

2023-02-21 23:53:29

質問

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

たとえば、ある非推奨の機能が 10.6 SDK から完全に消えてしまった場合などです。しかし、それを使用しなければならないので、ダイナミック リンクはそのような場合に常に最良の選択肢とは限りません。また、以前の SDK に対してリンクすると、以前の OS バージョンとの非互換性を引き起こすため、使用しないはずの機能が使用できなくなり、それを使用しようとすると直ちにコンパイラーまたはリンカー エラーになるため、開発が容易になることがあります。

最後になりましたが、Apple は Xcode4 から GCC 4.0 のサポートを削除しました。これは、特定のソフトウェアを正しくビルドするために必要な場合があり、Apple は SDK 10.4 を使用する際に GCC 4.2 でソフトウェアをコンパイルすることを許可していません。

もちろん、Xcode4 の隣に Xcode3 を並行してインストールすることはできますが、それは、Xcode4 のすべての (すばらしい?) 新機能を放棄して、時代遅れの Xcode3 IDE で作業を続けなければならないことを意味します。もし、古いプロジェクトを新しいプロジェクトと同じIDEで管理でき、利用可能な新機能の恩恵を受けられるのであれば、確かにずっと良いことでしょう。すべてのプロジェクトが10.6やIntel専用になることは、当分ないでしょう。さらに、私は、本当に必要であるよりも早く古いプラットフォームのサポートを廃止することに厳重に反対です。



この機能を Xcode4 に戻すことはできますか?

この機能を Xcode4 に戻すことはできますか?

どのように解決するのですか?

手っ取り早い答えとしては はい、できます!

の前に、" どのように行われるか の部分に入る前に、私のパッチ/ハック/修正に関するいくつかのメモを紹介します。最初から、主な目標は次のとおりです。

  1. すべての改変を最小限に抑えること。

    Xcodeのセットアップをできるだけオリジナルに保ちたいのです。

  2. ぜひとも、パッチを当てたり、ファイルを変更したりしないようにしてください。

    私たちは、すべてのファイルに手を加えず、元のコンテンツを維持することを望んでいます。

  3. 絶対に必要な場合を除き、ファイルを移動したりコピーしたりすることは避けるようにしてください。

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

もしあなたが端末操作の専門家でないなら、タイプミスを避けるために、私の返信からすべての端末コマンドを端末にコピー/ペーストすることを強くお勧めします。スペース、引用符、および特に大文字が重要であることを心に留めておいてください。一行ずつコピー&ペーストし、決して一度に複数行をペーストせず、ペーストした各行の後でリターンを押してコマンドを実行します。パスワードの入力を求められた場合、現在ログインしている管理者ユーザーのパスワードになります (入力中はキーストロークが表示されませんが、これは正常です。心配せずにパスワードを入力し続けてリターンを押してください。)

前提条件

始める前に、以下の条件が成立していることを確認してください。

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

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

重要 : をインストールしないでください。 システム ツール または " Unix 開発 Xcode3 の "パッケージです。

インストールするかどうか " 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用のコマンドを実行するだけです。

これだけで、Xcode4の選択リストにSDK 10.5(とおそらく10.4)が戻ってきます。よろしければ試してみてください。Xcode4 を起動し、プロジェクトを開き、選択した SDK を変更してみてください。簡単だったでしょう?次のステップに進む前に、必ずXcode4(ウィンドウだけでなく、アプリケーションも)をもう一度閉じてください。

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

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

SDK 10.4 を使用するには、GCC 4.0 を使用する必要があり、GCC 4.2 は機能しません。Apple は、GCC 4.2 は SDK 10.4 と互換性がないと主張していますが、私に言わせれば、これはでっち上げです。私はすでにこの制限を何度も上書きしているが、そのために微塵も問題が発生したことはない。SDK 10.4 を変更して Xcode で GCC 4.2 を使用できるようにするのは簡単ですが、私の目標はすべてのファイルの修正を避けることでしたので、Xcode に GCC 4.0 サポートを追加するだけにとどめ、一部のプロジェクトは本当に 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 バイナリを構築するのに問題はないはずです。ただ、"を選択するだけです。 その他... を選択するだけです。 アーキテクチャ " ビルドの設定と手動で入力する" ppc を入力し、quot.を変更します。 有効なアーキテクチャ を含むように変更します。 ppc を追加しました。GCC 4.2 と SDK 10.5 を使用して PPC バイナリを構築しようとするとまだ失敗することを除けば、ほぼ完了です。

ステップ 5: GCC 4.2 の PPC サポートをリストアする

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

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の組み合わせについて言及したときに、ほとんどの人は混乱するでしょう。このハックについて言及するのを忘れると、まともな返信ではなく、むしろ愚かなコメントを受け取ることになるかもしれません。

質問や問題点を返信やコメントとしてここに投稿するのは控えてください。返信として投稿することは、返信ではないので意味がありませんし、人々があなたに返信する方法は、コメントを使う以外にありません。また、コメントとして投稿することは、コメントにはツリー状の階層がないため、非常に小さなスペースに制限され、返信コメントを追跡することは難しいでしょう(さらに、まともな返信や解決のためのスペースもほとんど提供されないでしょう)。ありがとうございました。

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