【问题标题】:How to build third party libraries with Android NDK如何使用 Android NDK 构建第三方库
【发布时间】:2010-06-10 11:08:01
【问题描述】:

如何使用 android NDK 编译第三方库?我正在编译一个将 JNI 函数实现为共享库的包装器,它依赖于另一个 3rd 方库(HTK)。我不知道如何设置makefile。以下方法不起作用:

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

include HTKLib/Android.mk

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

LOCAL_MODULE    := gaitfuncs
LOCAL_SRC_FILES := gaitfuncs.c
%LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

include $(BUILD_SHARED_LIBRARY)

然后,第二个 makefile 应该构建一个静态库,我的共享库链接到该库。如何正确包含此子目录 makefile?这是正确的做法吗?作为奖励: LOCAL_SRC_FILES 变量是否有通配符来获取所有以 .c 结尾的文件。

谢谢!

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    我找到了解决办法:

    JNIPATH := $(call my-dir)
    LOCAL_PATH := $(JNIPATH)
    
    include $(call all-subdir-makefiles)
    
    LOCAL_PATH := $(JNIPATH)
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := gaitfuncs
    LOCAL_SRC_FILES := gaitfuncs.c
    LOCAL_STATIC_LIBRARIES := htk
    
    include $(BUILD_SHARED_LIBRARY)
    

    在调用 subdir-makefiles 函数之前调用 CLEAR_VARS 函数并不十分优雅;)

    【讨论】:

      【解决方案2】:

      在Android NDK文件夹的documentation.html中,

      看看宏函数“my-dir”

      返回最后包含的 Makefile 的路径,通常是 当前 Android.mk 的目录。这对于在以下位置定义 LOCAL_PATH 很有用 Android.mk 的开头为:

       LOCAL_PATH := $(call my-dir)
      

      和宏函数“all-subdir-makefiles”

      返回位于所有子目录中的 Android.mk 列表 当前的“我的目录”路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多