Android.mk的变量有哪些

ops/2024/12/1 3:46:39/

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 文件通过一系列变量来定义模块的属性和依赖关系。


http://www.ppmy.cn/ops/138096.html

相关文章

【NLP 1、人工智能与NLP简介】

人人都不看好你,可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg:特定场景下的文本分类、垂直领域下的对…

远离网上的广告和无用信息,自己动手搭建Tipask问答网站

文章目录 前言1.Tipask网站搭建1.1 Tipask网站下载和安装1.2 Tipask网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置) 3. 公网访问测试4. 结语 前…

信号与系统的工程应用逐章简介(以奥本海姆第二版为例)

《信号与系统》是现代工程领域的重要教材,尤其在电子、通信、控制、信号处理等领域中占有举足轻重的地位。本书通过详细介绍信号和系统的基本理论及应用,帮助工程师和学者构建起处理和分析各种信号的基础框架。以下将从书中的各个章节出发,详…

如何查看ubuntu服务器的ssh服务是否可用

你可以通过以下几种方法检查 Ubuntu 服务器上的 SSH 服务是否可用: 1. 使用 systemctl 检查 SSH 服务状态 首先,检查 SSH 服务是否正在运行: sudo systemctl status ssh如果 SSH 服务正在运行,你会看到类似以下的输出&#xff…

从 App Search 到 Elasticsearch — 挖掘搜索的未来

作者:来自 Elastic Nick Chow App Search 将在 9.0 版本中停用,但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为,激励开发人员创造更具活力、更直观、更引人入…

计算机网络基础(2):网络安全/ 网络通信介质

1. 网络安全威胁 网络安全:目的就是要让网络入侵者进不了网络系统,及时强行攻入网络,也拿不走信息,改不了数据,看不懂信息。 事发后能审查追踪到破坏者,让破坏者跑不掉。 网络威胁来自多方面&#xff1a…

【科研】9如何高效阅读和理解学术论文

【科研】9如何高效阅读和理解学术论文 写在最前面一、为什么需要系统的阅读方法?二、阅读论文的11步方法三、实践示例四、常见问题解答五、结语 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ …

python3.9读取指定txt文件,将里面的所有文字计出总和,将txt文件的内容,按每50000字,保存成新的txt文件

“”" 读取指定的文本文件。 计算文件中所有字符的总数。 按照每50000个字符分割文本,并将每个部分保存到单独的文件中,确保文件名不重复。 “”" def split_text_file(input_file_path, chunk_size50000):# 读取整个文件内容with open(input_…