Xcode4でCPANモジュールがコンパイルできない問題の解決方法
購入したその日にさっそく開発環境を整えようとXcode4を入れて、iPhoneアプリ開発を...と思いきや、Perlの開発を始めたんですが、いくつかのCPANモジュールがインストール(コンパイル)できないのに気付きました。
コンパイル時のエラーは以下のようなもの。
lipo: can't open input file: /var/tmp/hoge.out (No such file or directory)どうやらXSなどのコンパイルが必要なモジュールでこの現象がおこっているようです。いろいろ調べてみたら、コンパイルオプションに「-arch ppc」があるのにppcのアーキテクチャのファイルが適切な場所にないからエラってしまうようです。
なんでだよーと思いつつ、Xcode4のREADMEを見たら以下のような記述を発見。
Xcode 4 does not support developing for PowerPC; you must continue to use Xcode 3.2.6 to develop applications for the PowerPC architecture. The Custom Install section below has instructions to install both Xcode 4 and Xcode 3.2.6 on the same Mac.
「Xcode4じゃPowerPCのサポートしないぜよw」って書いてありますね。
どうしようかなぁと思いつつ、その後もいろいろ調べてみたらこれに対する解決方法を2つ発見しました。
1つはppcのアーキテクチャを無視してx86_64とi386だけでコンパイルしちゃう方法で、もう1つは(実は入っている)ppcのアーキテクチャのファイルを適切な場所に置いてしまうという方法があります。
1つ目は、以下の環境変数を設定してコンパイルする方法。
ARCHFLAGS='-arch i386 -arch x86_64'これをドットファイルに設定するとか
$ env ARCHFLAGS='-arch i386 -arch x86_64' perl Makefile.PLとかすると問題なくコンパイルできます。
この方法は「perldoc perlmacosx」っていうpodに書いてあります。
こんなpodがあったんですね!知らなかったよ。
そして、もう1つの方法は「Xcode4でPowerPC」に書いてありました。
適切な場所に(実はインストールされている)ppcのアーキテクチャのファイルのシンボリックリンクをはるという方法です。
$ 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/どっちでも好きな方でいいと思うんだけど、個人的には後者の方法で対応しました。
なお、この現象はXcode4が出る以前にXcodeをインストールしていた環境ではおこらないので、特定の人しかこの問題に遭遇しないかもしれません。
困っている人がいたら、どっちかを試してみてください。