強火で進め

このブログではプログラム関連の記事を中心に書いてます。

iPhoneのビルド時に error: bits/c++config.h: No such file or directory

シミュレータだとエラーが発生しないけど実機向けのビルドを行ったときに発生。

解消方法

プロジェクトのビルド設定「その他の C フラグ」(英語表示だと OTHER_CFLAGS )に以下を追加。指定するフォルダは該当のSDK、ARMのバージョンにする必要があると思われる。

-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/usr/include/c++/4.2.1/armv7-apple-darwin9/

(2010/03/05 追記)
この設定だとシミュレータ向けのビルドを行うときに問題が発生します。そのためiPhoneの実機向けのビルドときのみこの指定を行う様にします。

具体的にはプロジェクトのビルド設定画面で

(1) 「その他の C フラグ」を選択後、ギア(歯車)のアイコンをクリックして「ビルド設定条件を追加」。
(2) 追加された行の左側をクリックし、「Any iPhone OS Device」を選択。

これでiPhone向けのビルドのときのみIncludeファイルの検索ディレクトリが追加されます。

参考サイト

Programming During Recess: Installing Passenger on My MacBook
http://jdfrens.blogspot.com/2009/12/installing-passenger-on-my-macbook.html

libxml2 をリンクしていて、iPhone SDK 3.x でビルド、Deployment Target を iPhone OS 2.x に設定しているとき、OS 2.x の環境で実行するとクラッシュする場合の対処 - 24/7 twenty-four seven
http://d.hatena.ne.jp/KishikawaKatsumi/20091009/1255042389