Компиляция Boost 1.54 XCode5 для устройства - фатальная ошибка: ошибка в бэкэнде: символ '___umodsi3' не может быть неопределенным в выражении вычитания

Мне удалось успешно скомпилировать 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 без проблем ранее ...

Спасибо! Даниэль


person user2858326    schedule 08.10.2013    source источник
comment
ты добился прогресса в этом? Я столкнулся с той же ошибкой и пока не могу найти решения. Есть всего несколько источников, где это снова упоминается, например llvm.org/bugs/show_bug.cgi?id=10992 или mail-archive.com/[email protected]/msg00402.html или answer.techwikihow.com/830119/   -  person japedo    schedule 09.09.2014


Ответы (1)


Возможно, я нашел ответ. Использовать

<compileflags>-mno-thumb

вместо:

<compileflags>-mthumb

У меня работает сейчас.

person japedo    schedule 11.09.2014