android.mk编译 so文件
时间: 2024-09-15 14:02:13 浏览: 54
`Android.mk` 是 Android NDK 中用于构建动态链接库 (Shared Object 或 SO 文件) 的一种 Makefile 风格的配置文件。它是原生代码模块化开发的一部分,它允许开发者指定 C/C++ 源代码、依赖项、编译选项以及最终生成的目标。通常,在 `jni/Application.mk` 中设置一些全局的属性,而在每个模块的目录下会有对应的 `Android.mk` 文件。
例如,一个基本的 `Android.mk` 文件可能会像这样:
```makefile
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_library
LOCAL_SRC_FILES := main.c other_source.c
# 设置编译器选项和目标架构
LOCAL_CFLAGS += -Wall -Wextra
LOCAL_LDLIBS += -llog # 添加对 log 库的依赖
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include
# 定义库的版本信息
LOCAL_EXPORT_C_INCLUDES := true
LOCAL_ABI_MODULES := true
LOCAL_MODULE_TAGS := debug optimized
$(call check_exists,main.c)
$(call link_shared_library, $(LOCAL_OUT_DIR)/libmy_library.so $(LOCAL_SRC_FILES))
```
在这个例子中,`LOCAL_MODULE` 设定的是库名,`LOCAL_SRC_FILES` 列出了需要编译的源文件。通过设置 `LOCAL_LDLIBS` 和 `LOCAL_C_INCLUDES`,可以管理依赖和包含路径。最后,`link_shared_library` 命令用于生成 SO 文件。
当你在 Java 或 C++ 中引用这个 SO 文件时,只需要添加相应的库引用,并在运行时动态加载即可。
阅读全文