Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369306
  • 博文数量: 87
  • 博客积分: 983
  • 博客等级: 准尉
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-25 07:20
文章分类

全部博文(87)

文章存档

2016年(1)

2015年(3)

2014年(55)

2013年(13)

2012年(15)

分类: Android平台

2014-08-25 15:25:42

原文地址:android.mk 作者:守候心田

Android.mk内的变量定义

3.1  LOCAL_PATH

一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。例如:

1.LOCAL_PATH:= $(call my-dir) 
-
 
宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)

 

3.2 include $( CLEAR_VARS)

宏CLEAR_VARS 由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。

 

3.3 LOCAL_SRC_FILES

本次需要编译的源文件

 

3.4 LOCAL_SHARED_LIBRARIES

本次编译需要链接的动态链接库文件,即.so文件

 

3.5 LOCAL_STATIC_LIBRARIES

静态链接库.

 

3.6 LOCAL_C_INCLUDES

本次编译需要包含的头文件,一个相对于当前目录可选的路径名单,当编译所有的源文件(C,C++和汇编)时,它将被添加进include搜索路径。例如:

LOCAL_C_INCLUDES := sources/foo

或者甚至:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo

 

3.6 LOCAL_LDLIBS

本次编译的链接选项,相当于gcc -l后的参数

3.7  LOCAL_CFLAGS

同样是编译选项,相当于gcc -O后面的参数

 

3.8 LOCAL_MODULE

生成的模块名,这个变量必须定义,表示make后将要生成的文件的名字

 

3.9 LOCAL_PACKAGE_NAME

apk文件名

3.10 LOCAL_MODULE_TAGS :=user eng tests optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译

4 include

include可Android多以这样的形式出现,如:include $( CLEAR_VARS),include $(BUILD_SHARED_LIBRARY).其实这个include可以理解成"执行"的意思,那么执行什么呢?当然是看后边的宏了.

宏CLEAR_VARS已经在3.2节中介绍过了,表示清除一些变量.

宏BUILD_SHARED_LIBRARY表示生成共享库,即生成.so文件

因此include $(BUILD_SHARED_LIBRARY)就是指定在/system/lib/目录下生成一个lib$(LOCAL_MOUDULE).so文件,同样类型的宏如下:

?CLEAR_VARS                                             清除LOCAL_xxx变量
?BUILD_SHARED_LIBRARY                     在/system/lib/目录下生成lib$(LOCAL_MOUDULE).so文件
BUILD_STATIC_LIBRARY                         生成lib$(LOCAL_MOUDULE).a文件
?BUILD_EXECUTABLE                               在/system/bin/目录下生成可执行文件
BUILD_PACKAGE                                      编译成一个apk文件

阅读(902) | 评论(0) | 转发(0) |
0

上一篇:socket编程备忘录

下一篇:dlopen 与dlsym

给主人留下些什么吧!~~