1
我正在尝试调试构建应用程序的C++端时出现的一些链接错误。 Android.mk看起来如下:JNI静态库无法链接
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := GLES
LOCAL_SRC_FILES := ModelGLES.cpp RendererGLES.cpp
LOCAL_LDLIBS := -llog -lGLESv1_CM
LOCAL_LDFLAGS := -Wl,-Map,$(LOCAL_MODULE).map
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := SndSys
LOCAL_SRC_FILES := SndSys.cpp libaudio_wrapper.cpp
LOCAL_STATIC_LIBRARIES := libaudio_ARM_NDK
LOCAL_LDLIBS := -llog
LOCAL_LDFLAGS := -Wl,-Map,$(LOCAL_MODULE).map
LOCAL_C_INCLUDES := $(LOCAL_PATH)
include $(BUILD_SHARED_LIBRARY)
我得到的错误是libaudio_wrapper。链接器无法改变libaudio_ARM_NDK中的符号。文件夹结构如下所示:
应用程序\ JNI \ SndSys.cpp libaudio_wrapper.cpp Android.mk libaudio_ARM_NDK.a
我打电话JNI的文件夹内NDK建造形式。输出如下:
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile++ thumb : GLES <= ModelGLES.cpp
Compile++ thumb : GLES <= RendererGLES.cpp
SharedLibrary : libGLES.so
Install : libGLES.so => libs/armeabi/libGLES.so
Compile++ thumb : SndSys <= SndSys.cpp
Compile++ thumb : SndSys <= libaudio_wrapper.cpp
SharedLibrary : libSndSys.so
/Users/bob/Desktop/Root/Relaxation/obj/local/armeabi/objs-debug/SndSys/libaudio_wrapper.o: In function `audioInit(int, int)':
/Users/bob/Desktop/Root/Relaxation/jni/libaudio_wrapper.cpp:37: undefined reference to `GetAudioChannelSize'
/Users/bob/Desktop/Root/Relaxation/jni/libaudio_wrapper.cpp:38: undefined reference to `GetAudioInitControlSize'
是否有一种简单的方法来查看链接器是否正在查找我的库?或者让命令行调用gcc或ld?