0

ndk-build でコンパイルするときに Android.mk にロードする共有ライブラリを指定するにはどうすればよいですか?

編集:これは私の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 は、Android 用に作成したライブラリです。それを使ってプログラムを作りたい。今、それは私にこのエラーを与えます:

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
4

2 に答える 2

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から詳細を読む

? 今まで何をしてきたか、どこで問題に直面しているかを見せてください。

于 2012-06-13T11:55:31.243 に答える
0

私も同じ問題を抱えていました。それを修正するために、次のことを行いました。

  1. Android.mk ファイルと同じディレクトリに、Application.mk という名前のファイルを作成します。
  2. 次のコード行を Application.mk に追加します。 "APP_PLATFORM := android-8"

Application.mk ファイルが既にある場合は、ステップ 2 のコードを既存のファイルに追加するだけです。ここで ndk-build を呼び出して、リンクするかどうかを確認します。ndk-build は、dladdr() を持たない古いバージョンの libdl でコンパイルされている可能性があります。ステップ 2 のコードにより、ndk-build は dladdr() を持つ更新された libdl を使用します。

于 2012-07-26T22:33:01.633 に答える