4280
XCode 6.1.1 で boost-1.57.0 を利用した iOS 向けのアプリを製作しています。

iOS シュミレータ iPhone 5s, 6, 6Plus, iPad
Airでビルドする際には問題ないのですが、他シュミレータ、Deviceでビルドすると以下のような警告と大量の referenced from
エラーが出てビルドできません。

他シュミレータでビルドした場合

```

    Undefined symbols for architecture i386:
    
```

Device(iPhone 5S)でビルドした場合

```

    ld: warning: ignoring file /Users/Himatya/src/boost/lib/libboost_serialization.a, 
    file was built for archive which is not the architecture being linked (arm64): /Users/Himatya/src/boost/lib/libboost_serialization.a
    Undefined symbols for architecture arm64:
    
```

どうすればビルドできるようになるでしょうか。
CC BY-SA 3.0
2015-01-07T14:01:05.140
4250
2015-01-08T12:29:13.743
2015-01-07T14:23:10.137
4978
7174
question
ios xcode6 c++ boost
XCode の boost を利用した開発で、特定のシュミレータ/Device 向けのビルドが失敗する
(ライブラリの生成方法の参考情報ということで、)

`Undefined symbols for architecture XXX:` といっているので、iOS/Simulator
用のライブラリが無いのが原因だと思われます。

ライブラリの作成方法はいろいろありそうですが
[gist.github.com/faithfracture/boost.sh](https://gist.github.com/faithfracture/c629ae4c7168216a9856)
を参考にしてライブラリを生成すると、一気に Framework にしてくれるのでラクです。

リンクは 1.56.0 なので
[fork](https://gist.github.com/faithfracture/c629ae4c7168216a9856/forks)
にある、[ここ](https://gist.github.com/pintaric/48c6772e6b0949ae9d06)とかを使うと、1.57.0
になりそうなので、例えば、、

```

    $ cd /tmp
    $ curl https://gist.githubusercontent.com/pintaric/48c6772e6b0949ae9d06/raw/957daaee6fd9f62768f68ebb63902751dd410439/build_boost.sh > build_boost.sh  
    $ sh ./build_boost.sh  
    ...
    
```

とすれば、しばらく待った後 /tmp/ios/framework/, /tmp/osx/framework/ 以下に boost.framework
が出来るので、 TARGETS > General の Linked Frameworks and Libraries
にフォルダごとドロップすれば良いはずです。

_(/tmp は、通常、再起動時に消えるので、問題が無ければ必要に応じて環境にあった場所に救い出してください)_

ビルドの際のハマリポイントとして、gcc が使われると駄目っぽいので、gcc をデフォルトにしている場合 `$ sudo port select gcc
none` ( ports の場合) とでもして clang にしておく必要があります。

## 追記

上記で紹介しているスクリプトは、ビルドが失敗した場合、原因究明が難しい作りになっています。また、各々の環境や、将来にわたって動作するとは限らないので、問題があった場合、自身で
build_boost.sh を修正するなどして調整してください。。
CC BY-SA 3.0
2015-01-08T07:25:38.613
4280
2015-01-08T12:29:13.743
2015-01-08T12:29:13.743
2992
2992
4250
answer