クロスコンパイルを行っています。コードを ndk ビルドしようとしていますが、 Python.hをインクルードすると、 LONG_BIT 定義がプラットフォームに対して間違っているように見えます (gcc/glibc 構成が正しくありませんか?)というエラーが発生します。
インターネットで同様のケースをいくつか見つけましたが、問題はまだ解決されていません。それはvirtualenvの問題ですか?gcc に関する何かがインストールされています。それで、誰かがこの問題を解決する方法を提案しますか?
私は64ビットのpython 2.7を使用しています。Python.h は、Kivy の python-for-android プロジェクトから来ています。
エラー:
kivy@kivy-VirtualBox:~/AndroidStudioProjects/Pytest/python-for-android/dist/default/libs/armeabi$ /home/kivy/Android/Sdk/ndk-bundle/ndk-build NDK_PROJECT_PATH=/home/kivy/AndroidStudioProjects/Pytest APP_BUILD_SCRIPT=/home/kivy/AndroidStudioProjects/Pytest/app/src/main/jni/android.mk
[arm64-v8a] Compile : pyjni <= pyjni.c
In file included from /home/kivy/AndroidStudioProjects/Pytest/app/src/main/jni/../..
/../../python-for-android/dist/default/python-install/include/python2.7/Python.h:58:0,
from /home/kivy/AndroidStudioProjects/Pytest/app/src/main/jni/pyjni.c:1:
/home/kivy/AndroidStudioProjects/Pytest/app/src/main/jni/../../.
./../python-for-android/dist/default/python-install/include/python2.7/pyport.h:849:2:
error:
#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?).
"
#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
^
make: *** [/home/kivy/AndroidStudioProjects/Pytest/obj/local/arm64-v8a/objs/pyjni/pyjni.o] Error 1
android.mk
LOCAL_PATH := $(call my-dir)
#square
include $(CLEAR_VARS)
LOCAL_MODULE := square
LOCAL_SRC_FILES := square.c
include $(BUILD_SHARED_LIBRARY)
# Build libpyjni.so
include $(CLEAR_VARS)
LOCAL_MODULE := pyjni
LOCAL_SRC_FILES := pyjni.c
LOCAL_CFLAGS := -I $(LOCAL_PATH)/../../../../python-for-android/dist/default/python-install/include/python2.7/
LOCAL_LDFLAGS += -L $(LOCAL_PATH)/../../../../python-for-android/dist/default/libs/armeabi/
LOCAL_SHARED_LIBRARIES += python2.7 # This line links to libpython2.7
LOCAL_LDLIBS += -llog # This line links to the Android log
include $(BUILD_SHARED_LIBRARY)
# Include libpython2.7.so
include $(CLEAR_VARS)
LOCAL_MODULE := python2.7
LOCAL_SRC_FILES := ../../../../python-for-android/dist/default/libs/armeabi/libpython2.7.so
include $(PREBUILT_SHARED_LIBRARY)