Мне удалось успешно скомпилировать boost 1.54 для симулятора iOS 7.0 с использованием XCode 5, но при попытке скомпилировать для устройства этот странный сбой 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' не может быть неопределенным в выражении вычитания clang: error: команда внешнего интерфейса clang завершилась неудачно с кодом выхода 70 (используйте -v для просмотра вызова) Apple LLVM версия 5.0 (clang-500.2.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=static install
Это приведет к ошибке, указанной выше.
Для сравнения при компиляции для симулятора со следующей строчкой:
./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 без проблем ранее ...
Спасибо! Даниэль