• android开发 NDK 编译和使用静态库、动态库


    NDK 编译和使用静态库、动态库

    情况一:编译静态库

    情况二:编译动态库

    情况三:编译动态库+静态库

    情况四:已有第三方静态库(动态库),编译静态库(动态库)


    默认所有代码和文件在$project/jni下,否则特殊说明。

    情况一:编译静态库

    文件Android.mk:
    #获取当前目录

    LOCAL_PATH := $(call my-dir)
    #清楚一些变量
    include $(CLEAR_VARS)
    #生成的库名
    LOCAL_MODULE    := hello-jni

    #库对应的源文件
    LOCAL_SRC_FILES := hello-jni.c
    #生成静态库
    include $(BUILD_STATIC_LIBRARY)


    文件Application.mk:

    APP_MODULES :=hello-jni


    情况二:编译动态库

    文件Android.mk:

    LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE    := hello-jni
    LOCAL_SRC_FILES := hello-jni.c
    include $(BUILD_SHARED_LIBRARY)


    情况三:编译动态库+静态库

    文件Android.mk:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)
    LOCAL_MODULE    := mylib_static
    LOCAL_SRC_FILES := src.c
    include $(BUILD_STATIC_LIBRARY)

    include $(CLEAR_VARS)
    LOCAL_MODULE    := mylib_shared
    LOCAL_SRC_FILES := src2.c

    LOCAL_STATIC_LIBRARIES := mylib_static

    include $(BUILD_SHARED_LIBRARY)

    情况四:已有第三方静态库(动态库),编译静态库(动态库)

    文件Android.mk:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)
    LOCAL_MODULE := thirdlib1      # name it whatever
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libthird1.a     # or $(so_path)/libthird1.so
    #LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)    #or PREBUILT_SHARED_LIBRARY

    include $(CLEAR_VARS)
    LOCAL_MODULE    := mylib_use_thirdlib
    LOCAL_SRC_FILES := src.c

    LOCAL_STATIC_LIBRARIES := thirdlib1       #or LOCAL_SHARED_LIBRARY 

    include $(BUILD_SHARED_LIBRARY)   #如果编译静态库,需要Application.mk


  • 相关阅读:
    模版的完全特化与偏特化
    [转]windows消息机制(MFC)
    MFC宏常识
    半透明AlphaBlend
    new、operator new、placement new
    DuplicateHandle
    Mac OS X 更新JAMF域控配置
    生成自签名CA+SSL证书
    Office 2016系列下载地址
    Spring Security静态资源访问
  • 原文地址:https://www.cnblogs.com/black/p/5171636.html
Copyright © 2020-2023  润新知