From 14cf1f6be308fed9021f58c356736a2f83f5fb66 Mon Sep 17 00:00:00 2001 From: "rick.chan" Date: Wed, 20 Jan 2021 14:42:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20BOARD=5FVENDOR=5FKERNEL=5F?= =?UTF-8?q?MODULES.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rick.chan --- .../Android/Build/Android_mk_文件说明.md | 29 ++++++++++++++++--- .../Android/Build/理解_Android_Build_系统.md | 10 +++---- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Software/Development/OperatingSystem/Android/Build/Android_mk_文件说明.md b/Software/Development/OperatingSystem/Android/Build/Android_mk_文件说明.md index ffd7363..9d82692 100644 --- a/Software/Development/OperatingSystem/Android/Build/Android_mk_文件说明.md +++ b/Software/Development/OperatingSystem/Android/Build/Android_mk_文件说明.md @@ -1,25 +1,46 @@ # Android mk 文件说明 -## LOCAL_LDLIBS +## 1.BOARD 配置 + +### 1.1.BOARD_VENDOR_KERNEL_MODULES + +指示要编译到 Vendor Image 中的独立内核模块,一般结合 TARGET_KERNEL_MODULES_OUT 宏使用: + +```mk +BOARD_VENDOR_KERNEL_MODULES += \ + $(TARGET_KERNEL_MODULES_OUT)/rmouse.ko +``` + +## 2.其他配置 + +### 2.1.LOCAL_LDLIBS LOCAL_LDLIBS :链接的库不产生依赖关系,一般用于不需要重新编译的库,如库不存在,则会报错找不到。且貌似只能链接那些存在于系统目录下本模块需要连接的库。如果某一个库既有动态库又有静态库,那么在默认情况下是链接的动态库而非静态库。 -如:LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog +如: + +```mk +LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog +``` 如果你的 Android.mk 文件中只有这么一行,那么将会采用动态链接。 注:如果是非系统的第三方库,貌似只能用 LOCAL_LDFLAGS 方式,LOCAL_LDLIBS 方式不行。 -## LOCAL_SHARED_LIBRARIES +### 2.2.LOCAL_SHARED_LIBRARIES LOCAL_SHARED_LIBRARIES 会生成依赖关系,当库不存在时会去编译这个库。 -## LOCAL_LDFLAGS +### 2.3.LOCAL_LDFLAGS LOCAL_LDFLAGS:这个编译变量传递给链接器一个一些额外的参数,比如想传递而外的库和库路径给 ld,或者传递给 ld linker 的一些链接参数,-On,-EL{B}(大小端字节序),那么就要加到这个上面,如: +```mk LOCAL_LDFLAGS += -L$(LOCAL_PATH)/lib/ -lHWrecog –EB{EL} –O{n} … +``` 或者直接加上绝对路径库的全名: +```mk LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/libHWrecog.a –EB{EL} –O{n} +``` diff --git a/Software/Development/OperatingSystem/Android/Build/理解_Android_Build_系统.md b/Software/Development/OperatingSystem/Android/Build/理解_Android_Build_系统.md index e83ae0a..8ec79b9 100644 --- a/Software/Development/OperatingSystem/Android/Build/理解_Android_Build_系统.md +++ b/Software/Development/OperatingSystem/Android/Build/理解_Android_Build_系统.md @@ -261,7 +261,7 @@ Build 系统中包含的其他一些 Make 目标说明如表 5 所示: * AndroidProducts.mk:该文文件中的内容很简单,其中只需要定义一个变量,名称为“PRODUCT_MAKEFILES”,该变量的值为产品版本定义文件名的列表,例如: -```ini +```mk PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/full_stingray.mk \ $(LOCAL_DIR)/stingray_emu.mk \ @@ -291,7 +291,7 @@ $(LOCAL_DIR)/generic_stingray.mk 通常情况下,我们并不需要定义所有这些变量。Build 系统的已经预先定义好了一些组合,它们都位于 /build/target/product 下,每个文件定义了一个组合,我们只要继承这些预置的定义,然后再覆盖自己想要的变量定义即可。例如: -```ini +```mk # 继承 full_base.mk 文件中的定义 $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk) # 覆盖其中已经定义的一些变量 @@ -324,7 +324,7 @@ PRODUCT_MODEL := Full Android on LT26 Android.mk 文件通常以以下两行代码作为开头: -```ini +```mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ``` @@ -371,7 +371,7 @@ include $(CLEAR_VARS) 清单 2. 编译一个 APK 文件 -```ini +```mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 获取所有子目录中的 Java 文件 @@ -386,7 +386,7 @@ include $(BUILD_PACKAGE) 清单 3. 编译一个 Java 的静态库 -```ini +```mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)