Learn iPhone, iOS, Objective-c, Swift, cocos2dx, Unity and ….?

iOSやAndroid開発でのエラー解決法や便利tipsのメモ

RSS Feed

エラー – ld: file is universal (2 slices) but does not contain a(n) armv7s slice –

0 Comments
Posted by Kuro on 2013/03/16

スポンサードリンク

Apple Mach-O Linker Errorが起こりました。

詳細を見ると・・・

ld: file is universal (2 slices) but does not contain a(n) armv7s slice: /Users/foo/work/hoge/piyo-lib.a for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

stackoverflowで見つけた解決策に従って、Targets → Build → Settings → Architectures → Build Active Architecture Onlyの項目をYESに設定するとエラーが消えました。

エラーの意味

ついでにこのエラーの意味も調べてみました。

iOS端末には様々なものがありますが、プロセッサが採用しているアーキテクチャが異なることがあります。
そのため、どの端末に対応するバイナリを生成するのかを指定する必要があります。

このエラーでは、armv7s用のバイナリを生成しようとしたのに、使用しているStaticライブラリがarmv7s用でないためにビルドに失敗してしまっていたようです。

“Build Active Architecture Only”をYESにすることでエラーが消えるということは、armv7のみでのビルドということになったのだと思います。

iPhone5はarmv7sとなっていますがarmv7でも動きます。(armv7sよりパフォーマンスは落ちます)
3G端末はarmv6なので動きません。

参考サイト:
iPhoneSDKとアーキテクチャ
iOSデバイスとARMプロセッサ対応一覧

スポンサードリンク


You can leave a comment, or trackback from your own site.

0 Comments

You can be the first to comment!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

Popular Posts