我已经创建了一个android应用程序,这里大部分代码都在c中,所以我使用jni创建了它。我必须创建socket.so
文件,其中我必须使用libtest.so
。避免使用.a创建.so
同时在socket.so中使用libtest.so
所以我得到了error:undefined reference to function()
。我的函数()存在于libtest.so
内。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := libtest.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := socket
LOCAL_SHARED_LIBRARIES += libtest
LOCAL_SRC_FILES := source/interface.c source/file.c
LOCAL_LDFLAGS += libtest.a
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../libtest/jni/include
include $(BUILD_SHARED_LIBRARY)
,但它同时需要libtest.so
& libtest.a
文件存在:通过这么建议,我已经建立了我Android.mk如下使用Avid这一点。如果我只使用libtest.a
就好了。
因为我的要求是创建libtest.so并将其包含在socket.so中,任何人都可以告诉我如何避免依赖.a文件来创建.so文件。
如果我会评论LOCAL_LDFLAGS += libtest.a
然后我得到了error:undefined reference to function()
任何一个plz帮助我走出这个问题.......
while nm -a libxml2.so我没有得到任何符号。 但是当我完成nm -a libxml2.a时,我得到了它们...... .. – 2012-07-27 11:22:44
使用'nm -D'作为共享库,否则您将看不到任何东西。不要使用'-a'作为静态库,它将打印调试符号而不是普通的符号。 – onitake 2012-07-27 11:32:05
是通过使用-D我能够得到东西 – 2012-07-27 11:53:24