2010-04-23 1 views
5

Android에서 SoundTouch를 컴파일하려고합니다.stdexcept Android에서

./configure CPPFLAGS = "- I/볼륨/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/include /"LDFLAGS = "- Wl, -rpath-link =/볼륨/android-build/mydroid/개발/ndk/빌드/플랫폼/android-3/arch-arm/usr/lib -L/볼륨/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/lib -nostdlib -lc "- 호스트 = arm-eabi - 사용 가능 공유 = 예 CFLAGS ="- nostdlib -O3 -mandroid "host_alias = arm -eabi --no-create --no-recursion

Android NDK는 ARM을 대상으로하기 때문에 진행을 위해 -msse2 플래그를 제거하도록 Makefile을 변경해야했습니다.

내가 '메이크업'을 실행

, 내가 얻을 다음 -nostdlib 플래그가 필요 이후

/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 

이것은 매우 놀라운 일이 아니다. Android에는 stdexcept도 stdlib도없는 것으로 보입니다. SoundTouch를 컴파일하는이 블록을 지나갈 수있는 방법은 무엇입니까?

짐작할 수 있겠지만 사용해야 할 부분에 대해 알 수없는 플래그가있을 수 있습니다. stdexcept를 사용하지 않도록 코드를 리팩토링 할 수 있습니다. 원본 stdexcept 소스를 가져 와서 참조 할 수있는 방법이있을 수 있습니다. 미리 컴파일 된 stdexcept 라이브러리에 링크 할 수 있습니다.

답변