补充 BOARD_VENDOR_KERNEL_MODULES.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2021-01-20 14:42:18 +08:00
parent 6be565f874
commit 14cf1f6be3
2 changed files with 30 additions and 9 deletions

View File

@ -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}
```

View File

@ -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)