android - Android 上的标准除外

标签 android compilation android-ndk soundtouch

我正在尝试在 Android 上编译 SoundTouch。我从这个配置行开始:

./configure CPPFLAGS="-I/Volumes/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/include/"LDFLAGS="-Wl,-rpath- link=/Volumes/android-build/mydroid/development/ndk/build/platforms/android-3/arch-arm/usr/lib -L/Volumes/android-build/mydroid/development/ndk/build/platforms/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 库。

最佳答案

android ndk默认提供的gcc版本不支持异常。参见 http://www.crystax.net/android/ndk.php用于替代构建。

关于android - Android 上的标准除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2700106/

相关文章:

javascript - Android 键盘打开时防止文档回流/浏览器调整大小

java - 如何访问 Firestore 子集合中字段的值

android - 如何以编程方式限制android中的大写字母输入?

linux - 为什么安装的Centos系统使用的是ld.2.17,编译同版本的glibc-2.17却生成ld.so

c++ - 数组和sizeof麻烦编译错误C++

PHP Firebase Clood Messaging (FCM) 错误缺少注册

c++ - 启用 -std=c++0x 或 -std=gnu++0x 编译器选项

android - 原生 opencv for android

android - 无法在 Android Studio 上设置 Android NDK 版本

android-ndk - cygwin 出错 : ffmpeg compile with ndk