本文共 1549 字,大约阅读时间需要 5 分钟。
Android NDK 是一个工具集,可让您使用 C 和 C++ 等语言以原生代码实现应用的各个部分。对于特定类型的应用,这可以帮助您重复使用以这些语言编写的代码库。
关于ndk更多的内容可以在这里了解:
https://developer.android.google.cn/ndk我这里主要是为了编译在Android机顶盒上跑的so库来做准备的。
宿主机:Ubuntu16.04 64位
目标机:Android4.4.2电视机顶盒https://developer.android.google.cn/ndk/downloads
在这里下载最新版以及旧版本,也可以找开发板提供商要适合其版本的kit。
比如我这里有个r10版本的ndk:
链接:https://pan.baidu.com/s/1hlAwmfWuyZNIjQxCN6dF5A
提取码:kzig下载下来后直接解压到某个位置即可,我这里以我的r10为例,安装到/opt/android目录下。
sudo -smkdir /opt/androidcp ~/share/android-ndk-r10.tar.gz /opt/android/cd /opt/androidtar zxvf android-ndk-r10.tar.gz
我这里修改了两个位置:
/etc/profile和~/.bashrc注意:理论上修改/etc/profile即可,但是我修改完后当前用户未生效而仅仅root用户生效了,所以我又修改了~/.bashrc。
vi /etc/profile或vi ~/.bashrc
在末尾添加
#set NDK envexport NDKROOT=/opt/android/android-ndk-r10export PATH=$NDKROOT:$PATH
之后
source /etc/profile
使得环境变量生效即可。
对于.bashrc该脚本则是针对当前用户的,所以不能在root用户下执行,需要在你当前用户下执行:
source ~/.bashrc
使得环境变量生效后再运行ndk-就可以补全了。
对于指定交叉编译工具链的位置暂时我们不添加到环境变量中,你也可以根据自己的需要添加对应的环境变量指定你需要的交叉编译工具链的位置。
使用
ndk-
后tab补全来确认,结果如下:
zy@zy-virtual-machine:~$ ndk-ndk-build ndk-gdb ndk-gdb-py.cmd ndk-build.cmd ndk-gdb-py ndk-stack ndk-depends ndk-gdb.py ndk-which
这说明安装成功并且环境变量起效了,通过$PATH可以找到对应的可执行程序。
那么添加交叉编译工具链的位置的环境变量同样能够生效。其实不指定环境变量直接使用绝对路径获取交叉编译工具链也是可以的,但是这样写编译脚本时就相对麻烦一些,比如在cmake中指定c交叉编译器就要写:
set(CMAKE_C_COMPILER /usr/local/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc)
这样太长了,而且换台设备工具链位置换了的话通用性就显得稍微差一些。
转载地址:http://oykz.baihongyu.com/