1

XCode 5 を使用して、iOS 7.0 シミュレータ用にブースト 1.54 を正常にコンパイルできましたが、デバイス用にコンパイルしようとすると、この奇妙な Clang エラーが発生します。

darwin.compile.c++ bin.v2/libs/atomic/build/darwin-7.0~iphone/release/architecture-arm/link-static/macosx-version-iphone-7.0/target-os-iphone/threading-multi/lockpool .o 致命的なエラー: バックエンドのエラー: シンボル '___umodsi3' は、減算式で未定義にすることはできません 。 76) (LLVM 3.3svn に基づく) ターゲット: arm-apple-darwin12.5.0 スレッドモデル: posix

これが私のuser-config.jam設定です:

using clang : : : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++" ;

using darwin : 7.0~iphone
   : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
   : <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
     <compileflags>"-arch armv7"
     <compileflags>"-arch armv7s"
     <compileflags>-mthumb
     <compileflags>-fvisibility=hidden
     <compileflags>-fvisibility-inlines-hidden
     <compileflags>-std=c++11
     <compileflags>-stdlib=libc++
     <compileflags>-miphoneos-version-min=5.1
     <compileflags>-D_LITTLE_ENDIAN
     <compileflags>"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk"
   : <architecture>arm <target-os>iphone
   ;

using darwin : 7.0~iphonesim
   : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
   : <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer
     <compileflags>"-arch i386"
     <compileflags>-fvisibility=hidden
     <compileflags>-fvisibility-inlines-hidden
     <compileflags>-std=c++11
     <compileflags>-stdlib=libc++
     <compileflags>-miphoneos-version-min=5.1
     <compileflags>-D_LITTLE_ENDIAN
     <compileflags>"-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk"
   : <architecture>x86 <target-os>iphone
   ;

再現するための詳細な手順:

1. Download and extract the latest sources for boost 1.54
2. Create a user-config.jam in user's home directory (w text above).
3. Run ./bootstrap.sh in the boost directory
4. Run
./b2 toolset=darwin-7.0~iphone Architecture=arm target-os=iphone macosx-version=iphone-7.0 threading=multi linkflags=-stdlib=libc++ define=_LITTLE_ENDIAN link=静的インストール

これにより、上記のエラーが発生します。

比較のために、次の行を使用してシミュレーター用にコンパイルする場合:

./b2 toolset=darwin-7.0~iphonesim architecture=x86 target-os=iphone macosx-version=iphone-7.0 threading=multi linkflags=-stdlib=libc++ link=static install

これは正常に機能し、シミュレーターで使用するブースト ライブラリを正しく生成します。

何がこれを引き起こしている可能性があるかについて、誰か提案がありますか? それはclangコンパイラの問題ですか、それともデバイスコンパイルを間違って使用していますか? 以前は問題なく XCode 4.x を使用してデバイス用にコンパイルできました...

ありがとう!ダニエル

4

1 に答える 1

0

私は答えを見つけたかもしれません。使用する

<compileflags>-mno-thumb

それ以外の:

<compileflags>-mthumb

今私のために働きます。

于 2014-09-11T09:33:31.327 に答える