Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136695
  • 博文数量: 27
  • 博客积分: 1546
  • 博客等级: 上尉
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-25 22:46
文章分类
文章存档

2013年(2)

2012年(2)

2011年(7)

2010年(11)

2009年(4)

2008年(1)

我的朋友

分类: LINUX

2011-12-31 01:21:05

原文地址:

Android 中增加本地的程序或者库,这些程序和库与它们所在的路径没有关系,只和它们的 Android.mk 文件有关系。Android.mk 具有统一的写法,主要包含了一些系统公共的宏。选项参考以下文件:
build/core/config.mk
默认的值在以下文件中定义:
build/core/base_rules.mk
在一个 Android.mk 中也可以生成多个可执行程序、动态库或者静态库。
 
可执行程序的 Android.mk示例 :
# Test Exe
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
  main.c
LOCAL_MODULE:= test_exe
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_EXECUTABLE)

静态库(归档文件)的 Android.mk :
# Test Static lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
  helloworld.c
LOCAL_MODULE:= libtest_static
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)

动态库(共享库)的 Android.mk :
# Test shared lib
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
  helloworld.c
LOCAL_MODULE:= libtest_shared
TARGET_PRELINK_MODULE := false
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)

进行安装工作的 Android.mk :
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
copy_from := \
A.txt \
B.txt
copy_to := $(addprefix $(TARGET_OUT)/txt/,$(copy_from))
$(copy_to) : PRIVATE_MODULE := txt
$(copy_to) : $(TARGET_OUT)/txt/% : $(LOCAL_PATH)/% | $(ACP)
$(transform-prebuilt-to-target)
ALL_PREBUILT = $(copy_to)
# create some directories
DIRS := $(addprefix $(TARGET_OUT)/, \
txt \
$(DIRS):
@echo Directory: $@
@mkdir -p $@

Android.mk 部分参数简单介绍
可执行程序、动态库和静态库生成的女表分别在以下的文件夹中:
out/target/product/generic/obj/EXECUTABLE
out/target/product/generic/obj/STATIC_LIBRARY
out/target/product/generic/obj/SHARED_LIBRARY
其目标的文件夹分别为:
XXX_intermediates
XXX_shared_intermediates
XXX_static_intermediates
对于可执行程序和动态库,生成的 LINK 子目录中的包含带有符号的库(没有经过 strip )。
编译模板的区别如下所示:
编译target的模板:可执行程序,动态库,静态库
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
如果编译主机的:可执行程序,动态库,静态库
include $(BUILD_HOST_EXECUTABLE)
include $(BUILD_HOST_SHARED_LIBRARY)
include $(BUILD_HOST_STATIC_LIBRARY)
安装路径的问题
LOCAL_MODULE_PATH 和 LOCAL_UNSTRIPPED_PATH
增加以下可以安装到不同的文件系统:
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
文件系统的选择:
TARGET_ROOT_OUT : 表示根文件系统 out/target/product/generic/root
TARGET_OUT : 表示 system 文件系统 out/target/product/generic/system
TARGET_OUT_DATA : 表示 data 文件系统 out/target/product/generic/data
阅读(3198) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~