补充 BOARD_VENDOR_KERNEL_MODULES.
Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
parent
6be565f874
commit
14cf1f6be3
|
@ -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}
|
||||
```
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue