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

    xiaoxiao2021-03-25  33

    NDK 编译和使用静态库、动态库情况一:编译静态库情况二:编译动态库情况三:编译动态库+静态库情况四:已有第三方静态库(动态库),编译静态库(动态库) 默认所有代码和文件在$project/jni下,否则特殊说明。情况一:编译静态库文件Android.mk:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_STATIC_LIBRARY) 文件Application.mk:APP_MODULES :=hello-jni 情况二:编译动态库文件Android.mk:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)情况三:编译动态库+静态库文件Android.mk:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := mylib_staticLOCAL_SRC_FILES := src.cinclude $(BUILD_STATIC_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := mylib_sharedLOCAL_SRC_FILES := src2.cLOCAL_STATIC_LIBRARIES := mylib_staticinclude $(BUILD_SHARED_LIBRARY)情况四:已有第三方静态库(动态库),编译静态库(动态库)文件Android.mk:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := thirdlib1 # name it whateverLOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libthird1.a # or $(so_path)/libthird1.so#LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/includeinclude $(PREBUILT_STATIC_LIBRARY) #or PREBUILT_SHARED_LIBRARYinclude $(CLEAR_VARS)LOCAL_MODULE := mylib_use_thirdlibLOCAL_SRC_FILES := src.cLOCAL_STATIC_LIBRARIES := thirdlib1 #or LOCAL_SHARED_LIBRARY include $(BUILD_SHARED_LIBRARY) #如果编译静态库,需要Application.mk用cd命令移至jni目录,运行/mnt/500G/public/NDK/android-ndk-r7b/ndk-build命令,这时命令行中可能会出现编译错误,比如头文件找不到,函数找不到等等,细心找找就能改掉。

    编译成功后,在工程目录下libs/x86中就会生成你想要的.so库。

    可以参考的如下:

    1.http://blog.csdn.net/ztguang/article/details/53708841

    2.http://blog.csdn.net/npjocj/article/details/7973832

    转载请注明原文地址: https://ju.6miu.com/read-150299.html

    最新回复(0)