1

我正在做交叉编译。我正在尝试 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

安卓.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)
4

0 回答 0