Компиляция OpenFST для iOS дает ошибки литья

Я пытаюсь скомпилировать OpenFST для iOS, вот где make не работает:

cd openfst-1.6.5/src/lib
/Applications/Xcode.app/Contents/Developer/usr/bin/g++ 
  -DHAVE_CONFIG_H 
  -I./../include 
  -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1/ 
  -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/ 
  -miphoneos-version-min=8.1 
  -arch armv7 
  -fno-exceptions 
  -funsigned-char 
  -pipe 
  -no-cpp-precomp 
  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk 
  -std=c++11 
  -MT compat.lo -MD -MP -MF .deps/compat.Tpo -c compat.cc -o compat.o

Он выдает много подобных ошибок, таких как эти

/../iPhoneOS.sdk/usr/include/c++/4.2.1/cwchar:212:12: 
  error: cannot initialize return object of type
  'wchar_t *' with an rvalue of type 'const wchar_t *'
{ return wcschr(const_cast<const wchar_t*>(__p), __c); }
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/../iPhoneOS.sdk/usr/include/c++/4.2.1/cwchar:218:12: 
  error: cannot initialize return object of type
  'wchar_t *' with an rvalue of type 'const wchar_t *'
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/../usr/include/c++/v1/tuple:1352:22: 
error: C++ requires a type specifier for all declarations
pair<_T1, _T2>::pair(piecewise_construct_t,
                     ^
/../usr/include/c++/v1/tuple:1351:1: 
error: declarator requires an identifier
inline _LIBCPP_INLINE_VISIBILITY
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Я чувствую, что использую здесь неправильную версию С++ или что-то в этом роде?


person Anx8    schedule 10.01.2018    source источник


Ответы (1)


Если c++/4.2.1 в вашей трассировке означает GCC 4.2.1, это определенно древний набор компиляторов (11 лет). OpenFst README говорит, что для этого требуется GCC 4.7 или выше. (Предположительно, это для поддержки C++11 и C99.) Я не знаю, как сопоставить версии XCode с версиями компилятора Clang (и какие версии Clang имеют существенную поддержку C++11), но я думаю, что это где-то задокументировано.

FWIW Я использую OpenFst на Linux + armv7 + GCC 5.4.0 (дешевый Chromebook + Crouton), пока мы говорим, поэтому я сомневаюсь, что проблема в поддержке ARM.

person structural ambiguity    schedule 12.01.2018
comment
Спасибо, это было очень полезно. если я удалю руководство - все компилируется нормально. Любая идея, почему файл make использует их и как заставить этого не делать? -I {$SDK_PATH}/iPhoneOS.sdk/usr/include/c++/4.2.1/ - person Anx8; 12.01.2018
comment
Нет, извините, я вроде как знаю, как использовать автоинструменты для создания вещей, но как это происходит с созданием Makefiles, для меня абсолютная загадка. - person structural ambiguity; 14.01.2018