2010-04-23 3 views
5

Ich versuche, SoundTouch auf Android zu kompilieren. Ich begann mit dieser configure-Zeile:stdexcept Auf Android

./configure CPPFLAGS = "- ich/Volumes/android-build/mydroid/entwicklung/ndk/build/plattformen/android-3/arch-arm/usr/include /" LDFLAGS = "- Wl, -rpath-link =/Volumes/android-build/mydroid/entwicklung/ndk/build/plattformen/android-3/arch-arm/usr/lib -L/Volumes/android-build/mydroid/entwicklung/ndk/build/plattformen/android-3/arch-arm/usr/lib -nostdlib -lc "-host = arm-eabi -enable-geteilt = ja CFLAGS =" - nostdlib -O3-mandroid "host_alias = arm -eabi --no-create --no-recursion

Da das Android NDK auf ARM abzielt, musste ich auch das Makefile ändern, um die Flags -msse2 zu entfernen, damit es weitergeht.

Wenn ich 'make' laufen, erhalte ich:

/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 

Das ist nicht sehr überraschend, da die -nostdlib Flag erforderlich war. Android scheint weder stdexcept noch stdlib zu haben. Wie komme ich an diesem Block zum Kompilieren von SoundTouch vorbei?

Bei einer Vermutung kann es eine Flagge geben, die ich nicht kenne, die ich verwenden sollte. Ich könnte den Code umgestalten, um stdexcept nicht zu verwenden. Es kann eine Möglichkeit geben, die ursprüngliche stdexcept-Quelle einzuziehen und darauf zu verweisen. Ich könnte möglicherweise zu einer vorkompilierten stdexcept-Bibliothek verknüpfen.

Antwort