android開發 NDK 編譯和使用靜態庫、動態庫 (轉)

  1. 在eclipse工程目錄下創建一個jni的文件夾
  2. 在jni文件夾中創建Android.mk和Application.mk文件

     

    Android.mk文件:android

     

    Android提供的一種makefile文件,用來指定諸如編譯生成so庫名、引用的頭文件目錄、須要編譯的.c/.cpp文件和.a靜態庫文件等。詳見附件中的Android.mk。eclipse

     

     

     

    Application.mk文件:函數

     

    定義了項目的一些細節,好比APP_ABI := x86(編譯X86平臺庫)、APP_PLATFORM := android-9(使用android-9以上的平臺庫)。ui

     

    1. 用cd命令移至jni目錄,運行/mnt/500G/public/NDK/android-ndk-r7b/ndk-build命令,這時命令行中可能會出現編譯錯誤,好比頭文件找不到,函數找不到等等,細心找找就能改掉。
    2. 編譯成功後,在工程目錄下libs/x86中就會生成你想要的.so庫。

     

    NDK 編譯和使用靜態庫、動態庫spa

    狀況一:編譯靜態庫.net

    狀況二:編譯動態庫命令行

    狀況三:編譯動態庫+靜態庫blog

    狀況四:已有第三方靜態庫(動態庫),編譯靜態庫(動態庫)ip

     

    默認全部代碼和文件在$project/jni下,不然特殊說明。ci

    狀況一:編譯靜態庫

    文件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

    摘自: http://blog.csdn.net/heng615975867/article/details/11904737
相關文章
相關標籤/搜索