Centos系统中 Android tbb的编译

来源:互联网 发布:linux cat sed 编辑:程序博客网 时间:2024/05/16 04:14

编译动态库,怕的就是官方文档不说明不同版本可能依赖的软件版本不一样。为此最好是尝试不同版本的动态库源码进行编译,这样依赖软件不改变就可能编译成功了。

一、NDK的下载

下载NDK:地址: 
http://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.zip 

二、TBB下载

官方网站上提供不同平台的TBB下载,但是用于android,其动态库要求为armeabi或armeabi-v7a的版本需要自己编译,linux版本的android tbb是x86架构的。因此需要下载源码进行编译。有点版本的源码不知道怎么回事,编译不了,所以可能需要下载不同的版本进行尝试。

三、编译步骤

1、解压NDK,设置NDK的路径,注意的是,tbb默认的nkd的路径名称为

ANDROID_NDK_ROOT,因此环境变量为:

export ANDROID_NDK_ROOT=/home/android-ndk-r8d;

export PATH=/home/android-ndk-r8d:$PATH;

2、解压tbb,进入tbb根目录,在命令行键入
首先:nkd-build (否则可能会提示concurrent_hash_map.o错误)
然后:nkd-build target=android //(armeabi)
或者
nkd-build target=android arch=arm //(armeabi-v7a)

3.如果出错,下面有错误的可能相关处理办法。

4.导入tbb android项目,项目地址为:tbb42_20140122oss\examples\parallel_for\tachyon\android

5.如果tbb编译成功,则导入项目也可以直接编译成功

四、错误解决办法

1、下载不到ndk旧版本

ndk官方网站上只提供最新版的ndk下载,下载旧版ndk的方法为将上面红色的地方修改,如下载linux下32位nkd7,则下载地址为http://dl.google.com/android/ndk/android-ndk-r8d-linux-x7d.zip 

2、设置android adb环境变量

2.1.找到android sdk的本地路径,

    adb命令在platform-tool下面,记为XXXX

    我的路径是(/Applications/eclipse/android-sdk-mac_x86/platform-tools)

2.2.打开终端输入

      gedit /etc/profile 点回车

2.3.添加路径

    如果打开的文档里面已经有内容,我们只要之后添加;XXXX(注意前面一定要用分号隔开),

    如果是一个空白文档的话,我们就输入一下内容

     export PATH=${PATH}:XXXX

    保存,关掉这个文档,

2.4.终端输入命令  source/etc/profile
2.5.终端输入命令 adb点回车,如果未显示command not found,说明此命令有效,环境便亮设置完成。

二、设置NDK版本

项目使用的一个开源库更新后,发现在android平台编译出错了,因为他使用了c++11的auto特性,编译器尚未支持。

因为gcc4.8.1已经完全实现了c++11的特性,所以我需要看一下我使用的ndk支持哪些toolchain。

我使用的是ndk r8e (也是目前-2013.6月-的最新版),看一下他的toolchains目录,支持到了gcc4.7。根据他的文档,默认是使用了gcc4.6。

设置toolchain的方法是在Application.mk中设置:

NDK_TOOLCHAIN_VERSION = 4.7

为了确认是否设置成功,在ndk-build调用时增加参数V=1。即 ndk-build V=1 ..其他参数..

结果会显示:/Developer/sdks/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF ....

所以可以看到设置成功了。



0 0
原创粉丝点击