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

Мне удалось успешно скомпилировать boost 1.54 для симулятора iOS 7.0 с использованием XCode 5, но при попытке компилировать устройство получило такой странный сбой:

darwin.compile.c ++ bin.v2 / libs / atomic / build / darwin-7.0 ~ iphone / release / архитектура-arm / link-static / macosx-версия-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)
Цель: рука-яблоко-дарвин12.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 = целевая рука-версия = macosx-версия iphone = многопоточность iphone-7.0 = флаги с несколькими ссылками = -stdlib = libc ++ define = _LITTLE_ENDIAN link = статическая установка

Это приведет к ошибке выше.

Для сравнения при компиляции для симулятора со следующей строкой:

./ b2 toolset = darwin-7.0 ~ архитектура iphonesim = x86 target-os = iphone macosx-version = многопоточность iphone-7.0 = флаги нескольких ссылок = -stdlib = libc ++ link = статическая установка

Это работает нормально и правильно генерирует библиотеки наддува для использования с симулятором.

Будет ли у кого-нибудь предложение относительно того, что может быть причиной этого? Это проблема компилятора clang или я неправильно использую устройство? Я был в состоянии скомпилировать для устройства с XCode 4.x без проблем ранее …

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

1

Решение

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

<compileflags>-mno-thumb

вместо:

<compileflags>-mthumb

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]