私は NDK の最新バージョン (数週間前) の r10d を使用し、ビルド ツールを使用して Python と Python のいくつかの拡張機能をビルドしています。ビルド ツールを使用して、Android Studio のプロジェクトにリンクされる共有オブジェクトを作成します。組み込み Python ライブラリをビルドする Android スタジオ以外のビルド環境では、最新のプラットフォームを自動的に使用するため、この場合は NDK_ROOT/platforms/android-21 を使用しています。
すべて正常にビルドされましたが、4.4.4 を実行しているデバイスで次のエラーでクラッシュしました:
そのため、調査を行ったところ、Python 拡張機能の 1 つがこのメソッドを使用しており、NDK の sys/epoll.h で定義されていることがわかりました。ただし、プラットフォーム android-21 の bionic に追加されました (API 16 から構築しているので、まだこれに遭遇していないことに驚いています)。以前のプラットフォーム ライブラリでは、メソッドはエクスポートされません。したがって、このメソッドは最新の android-21 libc に追加されたばかりだと思います (android-21 libc.a ライブラリとヘッダーに存在することを確認しましたが、android-19 以下には存在しないことを確認しました。
最善の方法について少しアドバイスを求めています。現状では、いくつかのオプションがあると思います。1) 代わりに android-20 NDK プラットフォームに対してビルドします。この場合、configure スクリプトは拡張機能でのメソッドの使用を除外し、すべてが満足します。2) 代わりに epoll_create() を呼び出すように拡張コードを変更しますが、上流のリポジトリと同じにしておきたいです。3) android-21 usr/lib ディレクトリ内の静的な libc.a に対してリンクします...これは私が少し警戒しています。これでいいでしょうか?
ありがとう、クリス