2015-02-06 2 views
0

Linux x86에서 빌드 된 공유 라이브러리를 libA.so라고 부르겠습니다.이 라이브러리 SDK에서 제공하는 함수 호출을 사용하고 싶습니다.Android NDK : x86 공유 라이브러리 연결

나는 문제의 건물을 갖는 몇 가지 질문이 있어요 :

1) 나는 x86 용 구축 할 수있을 것입니다,하지만 나는 암에 대한 구축 할 수있을 것인가? 예를 들어 Nexus 5에서 실행할 수 없다는 의미의 대답은 '아니오'라고 생각합니다. 2) ndk-build는 LOCAL_SHARED_LIBRARIES에 의해 해결되어야하는 #include에 대해 불평합니다. 왜 그런지 모르겠습니다. 내 Android.mk는 다음과 같습니다.

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := B 
LOCAL_SRC_FILES := B.cpp 

LOCAL_SHARED_LIBRARIES := A 
LOCAL_LDLIBS := -llog 
include $(BUILD_SHARED_LIBRARY) 

누군가가 내 Android.mk를 해결할 수 있도록 도와 줄 수 있습니까? B.cpp의 내 include 문에 대해 왜 불평하는지 이해할 수 없습니다. 팔 환경에서 B를 실행할 수 있는지 알려주십시오. 의존하고있는 SDK는 x86 기반입니다.

+0

당신이 점점 오류를 게시 할 수 : 제대로 안드로이드 목표를 위해 안드로이드 공유 라이브러리를 컴파일 할 수 있다면

그런 다음, 당신은 당신의 라이브러리에이 방법을 포함 할 것, 두 번째 문제를 해결하기 위해? 또한, 당신은 분명히 할 수 있습니다 : libA.so의 바이너리 버전 만 x86 용으로 컴파일되고 libA.so 용 소스 코드가 없으며 libA.so에서 함수를 호출하는 자신의 B.cpp에 코드가 있어야합니다. ? –

+0

네, 맞습니다! – Jary316

답변

0

공유 라이브러리 libA.so가 linux-x86 용으로 컴파일 되었다면, 안드로이드 x86 타겟에서 실행되지 않을 것입니다 (주로 glibc 대신 Bionic C 라이브러리에 링크되어야하기 때문에). android 팔 장치.

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := A 
LOCAL_SRC_FILES := ../libA/prebuilts/$(TARGET_ARCH_ABI)/libA.so # path to libA .so file, depending on the target ABI. 
LOCAL_EXPORT_C_INCLUDES := ../libA/includes # path to libA headers. 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := B 
LOCAL_SRC_FILES := B.cpp 
LOCAL_SHARED_LIBRARIES := A 
LOCAL_LDLIBS := -llog 
include $(BUILD_SHARED_LIBRARY) 
+0

대단히 고마워요,이 작품! – Jary316

관련 문제