stdexcept на Android - PullRequest
       29

stdexcept на Android

5 голосов
/ 23 апреля 2010

Я пытаюсь скомпилировать SoundTouch на Android. Я начал с этой строки конфигурации:

. / Configure CPPFLAGS = "- I / Volumes / android-build / mydroid / development / ndk / build / платформы / android-3 / arch-arm / usr / include /" LDFLAGS = "- Wl, -rpath- ссылка = / тома / android-build / mydroid / разработка / ndk / build / платформы / android-3 / arch-arm / usr / lib -L / Volumes / android-build / mydroid / разработка / ndk / build / platform / android -3 / arch-arm / usr / lib -nostdlib -lc "--host = arm-eabi --enable-shared = yes CFLAGS =" - nostdlib -O3 -mandroid "host_alias = arm-eabi --no-create - -не рекурсии

Поскольку Android NDK нацелен на ARM, мне также пришлось изменить Makefile, чтобы удалить флажки -msse2.

Когда я запускаю 'make', я получаю:

/bin/sh ../../libtool --tag=CXX   --mode=compile arm-eabi-g++ -DHAVE_CONFIG_H -I. -I../../include -I../../include  -I/Volumes/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/include/ -O3 -fcheck-new -I../../include -g -O2 -MT FIRFilter.lo -MD -MP -MF .deps/FIRFilter.Tpo -c -o FIRFilter.lo FIRFilter.cpp
libtool: compile:  arm-eabi-g++ -DHAVE_CONFIG_H -I. -I../../include -I../../include -I/Volumes/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/include/ -O3 -fcheck-new -I../../include -g -O2 -MT FIRFilter.lo -MD -MP -MF .deps/FIRFilter.Tpo -c FIRFilter.cpp -o FIRFilter.o
FIRFilter.cpp:46:21: error: stdexcept: No such file or directory
FIRFilter.cpp: In member function 'virtual void soundtouch::FIRFilter::setCoefficients(const soundtouch::SAMPLETYPE*, uint, uint)':
FIRFilter.cpp:177: error: 'runtime_error' is not a member of 'std'
FIRFilter.cpp: In static member function 'static void* soundtouch::FIRFilter::operator new(size_t)':
FIRFilter.cpp:225: error: 'runtime_error' is not a member of 'std'
make[2]: *** [FIRFilter.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

Это не очень удивительно, поскольку требовался флаг -nostdlib. Android, кажется, не имеет ни stdexcept, ни stdlib. Как мне пройти этот блок компиляции SoundTouch?

По-видимому, может быть какой-то флаг, о котором я не знаю, который мне следует использовать. Я мог бы изменить код, чтобы не использовать stdexcept. Может быть способ получить исходный источник stdexcept и сослаться на него. Возможно, я смогу связать с предварительно скомпилированной библиотекой stdexcept.

1 Ответ

2 голосов
/ 31 мая 2010

Стандартная версия gcc, предоставляемая с android ndk, не поддерживает исключения Смотрите http://www.crystax.net/android/ndk.php для альтернативной сборки, которая делает.

...