Ubuntu16.04下安装Android机顶盒(Android4.4.2)NDK交叉编译环境


文章目录

      • Ubuntu16.04下安装Android机顶盒(Android4.4.2)NDK交叉编译环境
      • 一、前言
      • 二、ndk下载
      • 三、ndk安装
      • 四、配置环境变量
      • 五、测试使用

一、前言

Android NDK 是一个工具集,可让您使用 C 和 C++ 等语言以原生代码实现应用的各个部分。对于特定类型的应用,这可以帮助您重复使用以这些语言编写的代码库。

关于ndk更多的内容可以在这里了解:
https://developer.android.google.cn/ndk

我这里主要是为了编译在Android机顶盒上跑的so库来做准备的。

宿主机:Ubuntu16.04 64位
目标机:Android4.4.2电视机顶盒

二、ndk下载

https://developer.android.google.cn/ndk/downloads

在这里下载最新版以及旧版本,也可以找开发板提供商要适合其版本的kit。

比如我这里有个r10版本的ndk:

链接:https://pan.baidu.com/s/1hlAwmfWuyZNIjQxCN6dF5A
提取码:kzig

三、ndk安装

下载下来后直接解压到某个位置即可,我这里以我的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补全来确认,结果如下:

[email protected]:~$ 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)

这样太长了,而且换台设备工具链位置换了的话通用性就显得稍微差一些。

更多相关文章

  1. eclipse开发Android必备环境搭建
  2. 判断力应用程序安装位置
  3. android定位功能(二)
  4. Android(安卓)TV,机顶盒Gridview 焦点
  5. Android学习笔记(9)——ListView简介
  6. Android(安卓)TV横向滚动网格布局——RecyclerView的使用
  7. 第17天 Android(安卓)Touch事件学习 4 获取手指触摸位置
  8. 修正AppCompatSpinner弹出框位置问题
  9. Android(安卓)SDK Manager无法显示可供下载的未安装SDK解决方案

随机推荐

  1. Android(安卓)XMl文件存储及其解析
  2. Android的log里这代表什么:Activity idle
  3. 安卓UI四种基本布局-线性布局
  4. 如何在项目中封装 Kotlin + Android(安卓
  5. Android多触点总结
  6. Android(安卓)Emulator UnknownHostExcep
  7. Android(安卓)碎碎念
  8. 盒模型居中及水平垂直
  9. Tinker热修复简单接入
  10. Android(安卓)属性动画 详解