使用libld错误构建Android-runtimeTest链接
由于我升级了gcc,我似乎无法编译我的Android 2.1项目 现在有一个链接错误:使用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
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)