Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 172

使用英特尔编译器编译Android程序

$
0
0

介绍

针对Android*的Intel(R) C++ 编译器(以下称为ICC Android),和Android NDK*中的GCC*编译器兼容,能用于开发基于x86的Android设备上的应用程序。开发机器可以使用Windows*,OS X*或者Linux*。使用Android版本的Intle C++编译器,需要Android NDK。ICC Android的主要优势是提供杰出的应用程序性能(说明:针对C/C++等本地代码,针对x86设备)。

安装

安装ICC Android很简单,在安装Google Android NDK之后,如果是Windows版本,只需要双击安装即可,在安装过程中根据需要填写Android NDK的路径,对于OS X*和Linux*,只需要在安装包解压后找到install.sh,在终端运行该安装脚本,安装过程中同样需要指定NDK的路径。

安装完成后,ICC Android会自动集成到NDK中,并且,ICC会成为默认的Android x86编译器。

在Android NDK编译系统中,使用ICC工具链:编译一个示例程序

对于使用NDK开发应用程序的程序员来说,切换到ICC Android编译器非常简单。下面是关于如何编译NDK自带的hello-jni程序的过程。

hello-jni工程的代码在:<NDK安装路径>\samples\hello-jni\jni\中。

方式一:使用命令行选项

打开cmd.exe,进入jni目录,执行ndk-build APP_ABI=x86 NDK_TOOLCHAIN=x86-icc命令。其中,APP_ABI的含义是编译目标为x86(可以参考NDK文档理解),NDK_TOOLCHAIN变量是NDK文档中没有介绍的变量,这个变量用于切换编译器,在安装了ICC Android编译器并集成到NDK中后,就可以使用NDK_TOOLCHAIN=x86-icc来切换了。

如何切换回gcc编译器?

前面提到,安装ICC后,ICC Android会成为x86的默认编译器,所以使用"ndk-build APP_ABI=x86"也会调用ICC编译器。那么,如果你需要切换回NDK自带的GCC编译器,可以使用选项“NDK_TOOLCHAIN=x86-<gcc version>” (其中<gcc version>为你所使用的NDK自带的GCC的版本,不同版本的NDK提供的GCC版本会发生变化,比如对于ndk-r9d来说,其提供了gcc4.6和gcc4.8,所以可以使用NDK_TOOLCHAIN=x86-4.8切换为GCC 4.8编译)。

说明:可以使用ndk-build的选项V=1查看log,其中会显示所使用的编译器,使用-B选项强制重新编译,更多ndk-build的选项请参考NDK文档。

方式二:使用Application.mk

了解NDK就知道,NDK的一些选项不仅仅可以通过命令行指定,也可以通过Application.mk来指定。可以在你的工程的Application.mk(如果没有,就创建一个)中添加如下上述设置:

APP_ABI := x86
NDK_TOOLCHAIN := x86-icc

比如hello-jni,可以在jni目录中修改Application.mk即可。设置后,就可以使用ndk-build编译了(比如ndk-build -B V=1等)。

说明:方式一和方式二本质上是一样的,关键点是要了解NDK_TOOLCHAIN变量,该变量在NDK的文档中可能没有提及。其它选项,参考NDK文档理解即可。比如,如果你需要设置ICC Android编译器的优化选项,那么可以使用Application.mk中的APP_CFLAGS (如APP_CFLAGS="-xATOM_SSSE3 -O3 -ipo"),也可以在命令行使用APP_CFLAGS选项。

在Eclipse中使用NDK,并且使用ICC Android编译器

如果了解Eclipse中使用NDK的方法,那么,对于使用ICC Android编译器也不是问题了。因为,Eclipse不过是自动调用ndk-build脚本而已,所以,仍然只需要在工程的Application.mk中设置如上的选项,那么,自然,Eclipse中也可以使用ICC Android了。

将ICC Android作为独立工具链使用

我们知道,在NDK中,有一个脚本用于提取一个独立工具链,提取的独立工具链,就可以用于类似于Linux*的方式来编译了,比如"gcc xxx.c....",这样的好处是,对于某些基于一般的makefile的方式的项目,很容易的移植到Android平台。NDK中创建独立工具链的脚本在:

<NDK安装路径>\build\tools\make-standalone-toolchain.sh,运行该脚本就可以创建独立工具链,当然,只能在Linux、OS X或Cygwin等下运行该脚本。

对于ICC Android,使用该脚本无法提取工具链,ICC Android提供了更直接的方法,它本身就是一个独立工具链。

对于windows用户:

只需要从开始菜单(Start > All programs > Intel C++ Compiler 14.0 
for Android > Command Prompt > Build Environment for Android)打开build environmet窗口:

或者打开一个普通的cmd.exe窗口,调用[icc-install-dir]\bin\compilervars.bat脚本,也可以正确的设置该环境。

使用独立工具链的方法,就是直接调用icc命令(类似于gcc命令),并且添加适当的选项即可。如,下面是将hello-jni的NDK源码,编译为动态库的过程:

说明:以上为英特尔的Android编译器的基本使用,关于英特尔编译器的优化选项和优化技术,可以参考其文档:

https://software.intel.com/en-us/compiler_14.0_ug_c

产品主页:http://software.intel.com/en-us/c-compiler-android


Viewing all articles
Browse latest Browse all 172

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>