在自建的android中包含C ++共享库。启动ndk-build时出错

时间:2013-06-20 15:06:26

标签: c++ android-ndk java-native-interface g++

我试图在自建的android发行版中包含简单的C ++共享库。它已使用g ++编译,没有任何错误和警告。

目前我需要将这个.so库包含在自建的android中。

我将我的源码复制到' $(Android源码)/ ndk / source / android / libmd5 / jni'并创建了包含下一个内容的Android.mk文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_CFLAGS := 

LOCAL_MODULE     := libmd5
LOCAL_LDLIBS     := -L$(SYSROOT)/usr/lib
LOCAL_SRC_FILES  := md5.h md5.cc

include $(BUILD_SHARED_LIBRARY) 

然后我在〜/ .bashrc

的末尾添加了下一行
    export PATH=$PATH:$HOME/AndroidSources/ndk:$HOME/bin/android-sdk-linux/tools

分别有NDK和SDK工具的路径。

当我启动ndk-build时,我接下来要做的事情:

andrey@andrey-desktop:~/AndroidSources/ndk/sources/android/libmd5$ ndk-build
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5    
Android NDK:   md5.h md5.cc    
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found
SharedLibrary  : libmd5.so
make: /home/andrey/AndroidSources/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: Command not found
make: *** [obj/local/armeabi/libmd5.so] Error 127

当我关注〜/ AndroidSources / ndk / toolchains / arm-linux-androideabi-4.4.3 /
我没有找到预建目录。只包括两个文件:config.mk和setup.mk

然而,当我从severally downloaded ndk-r8e启动ndk-build时,我得到了一个非常不同的输出:

$ ndk-build
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module md5    
Android NDK:   md5.h   
Compile++ thumb  : md5 <= md5.cc
StaticLibrary  : libstdc++.a
SharedLibrary  : libmd5.so
Install        : libmd5.so => libs/armeabi/libmd5.so

警告是理解 - .h文件不能在.mk文件中。但是我在libs / armeabi /(如上所述)中有最新的库

我用ubuntu 12.10做了一切,并尝试使用android source中的ndk。

我做错了什么?如何在自建的android中包含共享库?我希望我已经提供了足够详细的信息。如果没有,请问。

1 个答案:

答案 0 :(得分:1)

你没有在LOCAL_SRC_FILES中包含头文件,它只适用于源文件

LOCAL_SRC_FILES:= md5.h md5.cc

应该是

LOCAL_SRC_FILES:= md5.cc

在实际源文件中添加指向头文件(import语句)的链接