2012-06-13 3 views
0

Как указать общие библиотеки для загрузки в Android.mk при компиляции с помощью ndk-build?Загрузка общих библиотек с помощью Android.mk

Edit: Это мой Android.mk

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := lib-crypto 
LOCAL_SRC_FILES := libcrypto.so 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := tema1 
LOCAL_SRC_FILES := tema1.c 
LOCAL_SHARED_LIBRARIES := lib-crypto 
LOCAL_C_INCLUDES := /home/aleksei/openSSL0.9.8/include 
include $(BUILD_EXECUTABLE) 

libcrypto.so это библиотека, который я построил для андроида. Я хочу, чтобы программа использовала его. Теперь он дает мне эту ошибку:

Install  : libcrypto.so => libs/armeabi/libcrypto.so 
Executable  : tema1 
./obj/local/armeabi/libcrypto.so: undefined reference to `dladdr' 
collect2: ld returned 1 exit status 
make: *** [obj/local/armeabi/tema1] Error 1 
+0

@ Mr.32 Я должен упомянуть, что libcrypto. так что уже был построен с использованием ndk-build для android. И что включенный путь указывает на заголовки openSSL, которые я установил для ubuntu, но это должно быть то же самое правильно? – AlexandruC

ответ

1

У меня была та же проблема. Чтобы исправить это, я сделал следующее:

  1. В том же каталоге, что и файл Android.mk, создайте файл с именем Application.mk
  2. Добавьте следующую строку кода в Application.mk: "APP_PLATFORM := android-8"

Если у вас уже есть файл Application.mk, просто добавьте код на шаге 2 в существующий файл. Теперь вызовите ndk-build и посмотрите, не связано ли это. ndk-build может компилироваться со старой версией libdl, которая не имеет dladdr(). Код на шаге 2 заставит ndk-build использовать обновленный libdl с dladdr().

1
PREBUILT_SHARED_LIBRARY 
    Points to a build script used to specify a prebuilt shared library. 
    Unlike BUILD_SHARED_LIBRARY and BUILD_STATIC_LIBRARY, the value 
    of LOCAL_SRC_FILES must be a single path to a prebuilt shared 
    library (e.g. foo/libfoo.so), instead of a source file. 

    You can reference the prebuilt library in another module using 
    the LOCAL_PREBUILTS variable (see docs/PREBUILTS.html for more 
    information). 

далее от http://source-android.frandroid.com/ndk/docs/ANDROID-MK.html

Покажите мне, что вы сделали до еще и где вы перед проблемой.?

+0

Я отредактировал сообщение, чтобы он выглядел более четко. – AlexandruC

Смежные вопросы