android 静态库和动态库编译
来源:互联网 发布:windows 7怎么更改只读 编辑:程序博客网 时间:2024/05/17 17:54
android 库的编译依赖于nkd-build,使用之前请先安装NDK。
编译依赖 Android.mk 和 Application.mk 两个文件。
Android.mk(同时编译静态库和动态库):
LOCAL_PATH := $(call my-dir)$(info )$(info ****** Build Library ******)######################################### STATIC LIB ###########################################include $(CLEAR_VARS)# 源码路径CODE1_PATH := ../../code1CODE2_PATH := ../../code2CODE3_PATH := ../../code3# 输出库名LOCAL_MODULE := hello_android# 编译平台选项APP_ABI := armeabi armeabi-v7a x86 mipsLOCAL_CFLAGS := -O3 -Wl,-BsymbolicLOCAL_CFLAGS += -ffunction-sections -fdata-sections # 去无用代码# CODE1 SourceCODE1_C := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE1_PATH)/src/*.c))# CODE2 SourceCODE2_CPP := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE2_PATH)/src/*.cpp))# CODE3 SourceCODE3_C := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/*.c))# 根据平台不同,选择性编译ifeq ($(APP_ABI), x86) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/X86/*.c))else ifeq ($(APP_ABI), armeabi-v7a) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Neon/*.c)) else ifeq ($(APP_ABI), armeabi) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Neon/*.c)) else ifeq ($(APP_ABI), mips) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Mips/*.c)) endif endif endifendifLOCAL_SRC_FILES := $(call CODE1_C, $(LOCAL_PATH))LOCAL_SRC_FILES += $(call CODE2_CPP, $(LOCAL_PATH))LOCAL_SRC_FILES += $(call CODE3_C, $(LOCAL_PATH))LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/$(CODE1_PATH)/Include1 \ $(LOCAL_PATH)/$(CODE1_PATH)/Include2LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/$(CODE2_PATH)/IncludeLOCAL_C_INCLUDES += \ $(LOCAL_PATH)/$(CODE3_PATH)/Includeinclude $(BUILD_STATIC_LIBRARY)######################################### SHARED LIB ###########################################include $(CLEAR_VARS)CODE1_PATH := ../../code1CODE2_PATH := ../../code2CODE3_PATH := ../../code3LOCAL_MODULE := hello_android_sharedLOCAL_STATIC_LIBRARIES := hello_androidAPP_ABI := armeabi armeabi-v7a x86 mipsLOCAL_CFLAGS := -O3 -Wl,-BsymbolicLOCAL_CFLAGS += -ffunction-sections -fdata-sections # 去无用代码LOCAL_LDFLAGS := -Wl,--gc-sections# CODE1 SourceCODE1_C := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE1_PATH)/src/*.c))# CODE2 SourceCODE2_CPP := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE2_PATH)/src/*.cpp))# CODE3 SourceCODE3_C := $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/*.c))# 根据平台不同,选择性编译ifeq ($(APP_ABI), x86) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/X86/*.c))else ifeq ($(APP_ABI), armeabi-v7a) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Neon/*.c)) else ifeq ($(APP_ABI), armeabi) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Neon/*.c)) else ifeq ($(APP_ABI), mips) CODE3_C += $(subst $(LOCAL_PATH)/ ,, $(wildcard $(LOCAL_PATH)/$(CODE3_PATH)/src/Mips/*.c)) endif endif endifendifLOCAL_SRC_FILES := $(call CODE1_C, $(LOCAL_PATH))LOCAL_SRC_FILES += $(call CODE2_CPP, $(LOCAL_PATH))LOCAL_SRC_FILES += $(call CODE3_C, $(LOCAL_PATH))LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/$(CODE1_PATH)/Include1 \ $(LOCAL_PATH)/$(CODE1_PATH)/Include2LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/$(CODE2_PATH)/IncludeLOCAL_C_INCLUDES += \ $(LOCAL_PATH)/$(CODE3_PATH)/Includeinclude $(BUILD_SHARED_LIBRARY)
Application.mk
#APP_MODULES := hello_android_SAPP_OPTIM := releaseAPP_ABI := armeabi-v7aAPP_BUILD_SCRIPT := Android.mk
编译:
linux:ndk-build -B NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mkwindows:%NDK%/ndk-build.cmd -B NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mk
0 0
- android 静态库和动态库编译
- android动态库和静态库的编译
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- android开发 NDK 编译和使用静态库、动态库
- 静态编译动态编译;静态链接动态链接;静态库和动态库
- 静态编译动态编译;静态链接动态链接;静态库和动态库
- LeetCode 437. Path Sum III
- Hive SQL的编译过程
- 属性动画Animator工具类
- opencv学习笔记之对灰度图像遍历的三种方法
- Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)
- android 静态库和动态库编译
- This application has requested the Runtime to terminate it in an unusual way
- Android实用小特效
- PHP上传文件以及文件操作
- LINUX命令自动补全
- 75. Sort Colors
- java内存模型
- RecyclerView的基本使用方法
- 【Java基础知识】IO流--内存操作流ByteArrayInputStream、ByteArrayOutputStream