Bootstrap

Android.mk的变量有哪些

Android.mk 文件是 Android 构建系统中用于定义模块和依赖关系的 Makefile 文件。它使用一系列变量来指定源文件、库、编译选项等。以下是一些常用的 Android.mk 变量及其用途:

常用变量

  1. 模块名称

    • LOCAL_MODULE: 模块的名称,必须唯一。
      LOCAL_MODULE := mymodule
  2. 源文件

    • LOCAL_SRC_FILES: 指定模块的源文件列表。
      LOCAL_SRC_FILES := main.c myfunc.c
  3. C/C++ 标志

    • LOCAL_CFLAGS: C 编译器标志。
      LOCAL_CFLAGS := -Wall -Wextra
    • LOCAL_CPPFLAGS: C++ 编译器标志。
      LOCAL_CPPFLAGS := -std=c++11
    • LOCAL_C_INCLUDES: 指定额外的头文件搜索路径。
      LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
    • LOCAL_SHARED_LIBRARIES: 指定模块依赖的共享库。
      LOCAL_SHARED_LIBRARIES := libfoo libbar
    • LOCAL_STATIC_LIBRARIES: 指定模块依赖的静态库。
      LOCAL_STATIC_LIBRARIES := libfoo_static
    • LOCAL_LDLIBS: 链接器标志,通常用于链接系统库。
      LOCAL_LDLIBS := -llog -lz
  4. 输出类型

    • LOCAL_MODULE_CLASS: 模块的类别,如 SHARED_LIBRARIESSTATIC_LIBRARIESEXECUTABLES
      LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    • LOCAL_MODULE_SUFFIX: 模块的文件扩展名。
      LOCAL_MODULE_SUFFIX := .so
  5. 路径和文件

    • LOCAL_PATH: 当前目录的路径,通常在每个 Android.mk 文件的开头定义。
      LOCAL_PATH := $(call my-dir)
    • LOCAL_SRC_FILES: 源文件路径。
      LOCAL_SRC_FILES := $(LOCAL_PATH)/src/main.c
  6. 编译选项

    • LOCAL_ARM_MODE: 指定 ARM 模式(arm 或 thumb)。
      LOCAL_ARM_MODE := arm
    • LOCAL_MULTILIB: 指定多库模式(both3264)。
      LOCAL_MULTILIB := both
  7. 清理变量

    • include $(CLEAR_VARS): 清理所有本地变量,以便重新定义一个新的模块。
      include $(CLEAR_VARS)
  8. 构建规则

    • include $(BUILD_SHARED_LIBRARY): 构建一个共享库。
      include $(BUILD_SHARED_LIBRARY)
    • include $(BUILD_STATIC_LIBRARY): 构建一个静态库。
      include $(BUILD_STATIC_LIBRARY)
    • include $(BUILD_EXECUTABLE): 构建一个可执行文件。
      include $(BUILD_EXECUTABLE)
  9. 预构建模块

    • include $(PREBUILT_SHARED_LIBRARY): 包含预构建的共享库。深色版本
    • include $(PREBUILT_STATIC_LIBRARY)

示例 Android.mk 文件

以下是一个完整的 Android.mk 文件示例,展示了如何定义一个共享库模块:

# 指定当前目录
LOCAL_PATH := $(call my-dir)

# 清理所有本地变量
include $(CLEAR_VARS)

# 模块名称
LOCAL_MODULE := mylib

# 源文件列表
LOCAL_SRC_FILES := src/myfunc.c src/main.c

# 头文件搜索路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

# C 编译器标志
LOCAL_CFLAGS := -Wall -Wextra

# 链接器标志
LOCAL_LDLIBS := -llog -lz

# 依赖的共享库
LOCAL_SHARED_LIBRARIES := libfoo libbar

# 构建一个共享库
include $(BUILD_SHARED_LIBRARY)

总结

Android.mk 文件通过一系列变量来定义模块的属性和依赖关系。

;