使用libld错误构建Android-runtimeTest链接

使用libld错误构建Android-runtimeTest链接,android,build,linker,Android,Build,Linker,由于我升级了gcc,我似乎无法编译我的Android 2.1项目 现在有一个链接错误: out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/main.o: In function `symbolLookup(void*, char const*)': /home/roeischuster/tdroid/system/core/libacc/tests/main.cpp:41: undefined reference to `dlsym' co

由于我升级了gcc,我似乎无法编译我的Android 2.1项目

现在有一个链接错误:

out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/main.o: In function `symbolLookup(void*, char const*)':
/home/roeischuster/tdroid/system/core/libacc/tests/main.cpp:41: undefined reference to `dlsym'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/acc] Error 1
make: *** Waiting for unfinished jobs....
out/host/linux-x86/obj/EXECUTABLES/accRuntimeTest_intermediates/runtimeTest.o: In function `symbolLookup':
/home/roeischuster/tdroid/system/core/libacc/tests/runtimeTest.cpp:66: undefined     reference to `dlsym'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/accRuntimeTest_intermediates/accRuntimeTest] Error 1
我曾尝试将libld添加到system/core/libacc/tests/Androd.mk的本地共享库中,但后来我得到了:

make: *** No rule to make target `out/host/linux-x86/obj/lib/libdl.so', needed by `out/host/linux-x86/obj/EXECUTABLES/accRuntimeTest_intermediates/accRuntimeTest'.  Stop.

我做错了什么?

正如您在错误消息中看到的-
未定义对“dlsym”的引用
,当试图完成编译和链接
main.cpp-->main.o-->main
时,GNU链接器
ld
不知道可以使用
dl
库解析函数
dlsym
。我们可以通过传递参数
--library dl
-ldl
来通知
gcc
ld
有关
dl
库的信息

对于Android中交叉编译的特殊情况,请再次返回错误消息:

/home/roeischuster/tdroid/system/core/libacc/tests/main.cpp:41: 
undefined reference to `dlsym'
您应该在
~/tdroid/system/core/libacc/tests/Android.mk
上找到一个名为
Android.mk
的文件。要解决编译错误,请在每行
include$(CLEAR\u VARS)
之后添加一行,上面写着
LOCAL\u LDLIBS+=-ldl
。您的
Android.mk
文件现在应该如下所示,如果您在进行更改后再次执行
make
,所有内容都应该编译。干杯:-)

LOCAL_PATH:= $(call my-dir)

# Executable for host
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE:= acc 
LOCAL_LDLIBS += -ldl    
LOCAL_SRC_FILES:= \
        main.cpp    
LOCAL_SHARED_LIBRARIES := \
    libacc    
LOCAL_MODULE_TAGS := tests    
include $(BUILD_HOST_EXECUTABLE)

# Executable for target
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE:= acc 
LOCAL_LDLIBS += -ldl    
LOCAL_SRC_FILES:= \
        main.cpp \
    disassem.cpp    
LOCAL_SHARED_LIBRARIES := \
    libacc    
LOCAL_CFLAGS := -O0 -g      
LOCAL_MODULE_TAGS := tests    
include $(BUILD_EXECUTABLE)

# Runtime tests for host
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE:= accRuntimeTest    
LOCAL_LDLIBS += -ldl    
LOCAL_SRC_FILES:= \
        runtimeTest.cpp    
LOCAL_SHARED_LIBRARIES := \
    libacc    
LOCAL_MODULE_TAGS := tests    
include $(BUILD_HOST_EXECUTABLE)

# Runtime tests for target
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE:= accRuntimeTest

LOCAL_LDLIBS += -ldl    
LOCAL_SRC_FILES:= \
        runtimeTest.cpp    
LOCAL_SHARED_LIBRARIES := \
    libacc    
LOCAL_CFLAGS := -O0 -g    
LOCAL_MODULE_TAGS := tests    
include $(BUILD_EXECUTABLE)