Android NDK r10cでarm64-v8aのビルドに対応しましたが、NEONを有効にしている場合、次のようなエラーが出ます。
このエラーを回避するには、/library/android-ndk-r10c/build/core/build-binary.mk:283を以下のように修正する必要があります。
また、Android NDK r8dからstlportでも例外が使えるようになっているので、例外を使わないようにハックしている場合はシンボルの衝突が発生する可能性があります。以下で定義されているbad_allocと衝突しているので、例外部分は、gabi++を呼ぶ実装のようです。
Android NDK ネイティブプログラミングによると、GABI++は将来的にサポート予定となっている例外機構が利用できるSTLport+RTTIというライブラリの基礎とするために開発されたそうなので、計画通りの実装のようです。
後、Android NDK r10から、NEONを自動的にSSEに変換する機能が搭載されたようです。インテル製のarm_neon.hをincludeするだけで、自動的に命令を変換してくれます。x86 AndroidでのNEONエミュレーションに続き、インテルすごいです。
Android NDK: NEON support is only possible for armeabi-v7a ABI its variant armeabi-v7a-hard and x86 ABI
このエラーを回避するには、/library/android-ndk-r10c/build/core/build-binary.mk:283を以下のように修正する必要があります。
ifeq ($(filter $(TARGET_ARCH_ABI), armeabi-v7a armeabi-v7a-hard arm64-v8a x86),)
また、Android NDK r8dからstlportでも例外が使えるようになっているので、例外を使わないようにハックしている場合はシンボルの衝突が発生する可能性があります。以下で定義されているbad_allocと衝突しているので、例外部分は、gabi++を呼ぶ実装のようです。
library/android-ndk-r10c/sources/cxx-stl/stlport/stlport/../../gabi++/include/typeinfo
Android NDK ネイティブプログラミングによると、GABI++は将来的にサポート予定となっている例外機構が利用できるSTLport+RTTIというライブラリの基礎とするために開発されたそうなので、計画通りの実装のようです。
後、Android NDK r10から、NEONを自動的にSSEに変換する機能が搭載されたようです。インテル製のarm_neon.hをincludeするだけで、自動的に命令を変換してくれます。x86 AndroidでのNEONエミュレーションに続き、インテルすごいです。
コメント
コメント一覧 (1)