Android NDK 编译脚本分析 之一Word格式文档下载.docx

上传人:b****6 文档编号:16147515 上传时间:2022-11-21 格式:DOCX 页数:6 大小:17.22KB
下载 相关 举报
Android NDK 编译脚本分析 之一Word格式文档下载.docx_第1页
第1页 / 共6页
Android NDK 编译脚本分析 之一Word格式文档下载.docx_第2页
第2页 / 共6页
Android NDK 编译脚本分析 之一Word格式文档下载.docx_第3页
第3页 / 共6页
Android NDK 编译脚本分析 之一Word格式文档下载.docx_第4页
第4页 / 共6页
Android NDK 编译脚本分析 之一Word格式文档下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

Android NDK 编译脚本分析 之一Word格式文档下载.docx

《Android NDK 编译脚本分析 之一Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Android NDK 编译脚本分析 之一Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。

Android NDK 编译脚本分析 之一Word格式文档下载.docx

AndroidNDK的编译脚本系统,实际上并不是什么新东西,就是对GNUMakeFile系统的封装。

AndroidNDK自带了很多.mk文件(保存在ndk的NDK_ROOT/build目录中),文件中预定义了很多Make脚本函数和变量,以供用户编写自己的编译脚本时使用。

另外,NDK为所有应用统一提供了一个固定的编译入口--即大家熟悉的ndk-build。

我们首先从每个应用编译时都需要用到的编译入口开始分析。

一、ndk-build分析

(一)、脚本内容分析

该文件存在于ndk安装根目录中,实际上是一个shell脚本。

其有效内容如下:

PROGDIR=`dirname$0`

PROGDIR=`cd$PROGDIR&

amp;

&

pwd`#IfGNUMAKEisdefined,checkthatitpointstoavalidfile

if[-n"

$GNUMAKE"

];

then

ABS_GNUMAKE=`which$GNUMAKE2&

gt;

/dev/null`

if[$?

!

=0];

echo"

ERROR:

YourGNUMAKEvariableisdefinedtoaninvalidname:

$GNUMAKE"

Pleasefixittopointtoavalidmakeexecutable(e.g./usr/bin/make)"

exit1

fi

GNUMAKE="

$ABS_GNUMAKE"

else

#Otherwise,use'

make'

andcheckthatitisavailable

GNUMAKE=`whichmake2&

Cannotfind'

program.PleaseinstallCygwinmakepackage"

ordefinetheGNUMAKEvariabletopointtoit."

fi#OnWindows,whenrunningundercygwin,checkthatweare

#invokingacygwin-compatibleGNUMakebinary.Itisunfortunately

#commonforappdeveloperstohaveanothernon-cygwincompatible

#

if["

$OSTYPE"

="

cygwin"

GNUMAKE=`cygpath-u$GNUMAKE`

PROGDIR_MIXED=`cygpath-m$PROGDIR`

CYGWIN_GNUMAKE=`$GNUMAKE-f$PROGDIR_MIXED/build/core/check-cygwin-make.mk2&

1`

Youareusinganon-CygwincompatibleMakeprogram."

Currentlyusing:

`cygpath-m$GNUMAKE`"

"

Tosolvetheissue,followthesesteps:

1.EnsurethattheCygwin'

packageisinstalled."

NOTE:

YouwillneedGNUMake3.81orlater!

2.DefinetheGNUMAKEenvironmentvariabletopointtoit,asin:

exportGNUMAKE=/usr/bin/make"

3.Call'

ndk-build'

again."

fi$GNUMAKE-f$PROGDIR/build/core/build-local.mk"

$@"

下面我们对这些有效代码逐一进行分析:

pwd`在GNUmakefile中,两个反引号相当于shell函数,反引号括起来的内容相当于shell函数的参数。

而shell函数的功能就是调用操作系统的命令。

linux命令dirname,功能是获取后面参数的路径。

例如:

#dirname../../../ndk-build执行的结果是:

../../.."

顺便提一下,这里不能用pwd命令,pwd命令,是获得当前路径,获取的是当前路径的绝对路径。

所以,上面两条语句的结果就是在PROGDIR变量中保存ndk-build所在的路径。

有了这两条语句之后,就可以在任何位置执行ndk-build,而不必非要在ndk根目录中执行。

再之后的两段语句,是用来确定不同平台下正确的make工具。

#IfGNUMAKEisdefined,checkthatitpointstoavalidfile

fi最后一条语句,是调用:

$GNUMAKE-f$PROGDIR/build/core/build-local.mk"

这是真正开始执行make,指定Makefile为build-local.mk文件。

同时,将ndk-build的所有参数($@)原封不动地都传递进去。

总之ndk-build是对make指令的封装,并不对各个参数作处理,具体参数原封不动地传给make和Makefile。

由此可见,ndk-build,只是对make命令的一个封装,为编译提供一个统一的且适应性更强的编译入口。

(二)、技巧

二、build-local.mk文件分析=======================================================================================================================

一、Android.mk文件内容分析

典型的Android.mk文件一般会包含如下内容:

L

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1