Как видно из сообщения об ошибке - undefined reference to 'dlsym'
, при попытке завершить компиляцию и компоновку main.cpp --> main.o --> main
, компоновщик GNU ld
не знает, что функция dlsym
может быть разрешена с помощью библиотеки dl
,Мы можем сообщить gcc
или ld
о библиотеке dl
, передав короткий аргумент --library dl
или -ldl
.
Для вашего конкретного случая кросс-компиляции в Android вернемся ксообщение об ошибке снова:
/home/roeischuster/tdroid/system/core/libacc/tests/main.cpp:41:
undefined reference to `dlsym'
Вы должны найти файл с именем Android.mk
в ~/tdroid/system/core/libacc/tests/Android.mk
.Чтобы решить вашу ошибку компиляции, после каждой строки include $(CLEAR_VARS)
добавьте строку, которая говорит LOCAL_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)