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

2023-10-26

Ubuntu16.04下安装Android机顶盒(Android4.4.2)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 -s
mkdir /opt/android
cp ~/share/android-ndk-r10.tar.gz /opt/android/
cd /opt/android
tar zxvf android-ndk-r10.tar.gz

四、配置环境变量

我这里修改了两个位置:
/etc/profile和~/.bashrc

注意:理论上修改/etc/profile即可,但是我修改完后当前用户未生效而仅仅root用户生效了,所以我又修改了~/.bashrc。

vi /etc/profile
或
vi ~/.bashrc

在末尾添加

#set NDK env
export NDKROOT=/opt/android/android-ndk-r10
export 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)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • android使用隐藏api的方法(使用被@hide的api)

    前言 一开始需要说明的是 Google之所以要将一些API隐藏 指加上 hide标记的public类 方法或常量 是有原因的 其中很大的原因就是Android系统本身还在不断的进化发展中 从1 0 1 1到现在即将问世的Android 2
  • source /build/envsetup.sh和lunch)

    提醒 想要研究安卓编译系统 必须对bash shell和GUN make非常熟悉 不然会看的云里雾里 没有这个背景的可以先补充知识 1 source build envsetup sh 主要是加载device vendor目录下面的vend
  • 装X指南之Xposed安装与配置

    一 前言 Xposed 能干嘛 我可以告诉你 Root Xposed 真的可以为所欲为 而 Android 开源 为 搞机 带了更多的乐趣的同时 当然也引入安全性问题 部分流氓软件在 Root 下 会盗取用户私密信息 例如 号码 照片 短信
  • 泪目!阿里大佬国庆8天花了50个小时,整理出这份18万字Android-360°性能优化实战解析

    缘起 经过近十年的发展 Android技术优化日新月异 如今Android 10 0 已经发布 Android系统性能也已经非常流畅 可以在体验上完全媲美iOS 到了各大厂商手里 改源码 自定义系统 使得Android原生系统变得鱼龙混杂
  • C/C++在Android开发中的应用

    JNI开发系列阅读 JNI与底层调用1 http blog csdn net axi295309066 article details 60758515 JNI与底层调用2 http blog csdn net axi295309066 a
  • ScrollView默认位置不是最顶部

    场景描述 在scrollview中套用了一个recycleview 发现 recycleview上面的部分TextView不能被显示 直接显示的是recycleview的底部 分析原因 在Activity计算窗口的高度时 是在listvie
  • Android 宽高相等的adapter item内容

    使用一张网上的图 很多时候 我们需要用使用这样的排列 宽高固定 然后是中间留有一定的边距 毫无疑问 这里我们需要用到gridadapter GridView的item是正方形 而android需要适配不同尺寸的手机 所以不能写死item的高
  • Android安卓webview,网页端生成安卓项目(极速生成)教程

    Android安卓webview 网页端生成安卓项目 极速生成 教程 一 前言 当自己做了一个PC端的页面 也就是前端的页面 或者已经上服的页面 但也想生成一个安卓端供用户使用 本教程详细讲解如何把前端html页面或者链接生成安卓端项目 本
  • sqlite3 提示 not found

    在android开发中使用adb shell下的sqlite3命令来查看SQLite数据库时 出现了 sqlite3 not found 错误 在网上搜索了一下问题的原因 原来是模拟器或真机中的 system xbin 目录下少了sqlit
  • Android 避免耗时操作及解决办法

    Android耗时操作 我们可以通过几种方式实现 IntentService IntentService 与Service的不同之处在于IntentService是可以执行耗时任务的 而Service不能够执行耗时任务 否则会出现ANR异常
  • couldn't find native method

    有两个原因 1 java这边native方法没有 native void renderFrameStart 2 c这边没有实现native方法 12 29 15 52 27 901 32735 32735 com ffmpegtest E
  • Android中的Drawable资源—— InsetDrawable

    InsetDrawable 表示一个drawable嵌入到另外一个drawable内部 并且在内部留一些间距 存放位置 res drawable 使用方式 在Java文件中 R drawable filename 在xml布局文件中 pac
  • Android用surface直接显示yuv数据(二)

    研究了一段时间Android的surface系统 一直执着地认为所有在surface或者屏幕上显示的画面 必须要转换成RGB才能显示 yuv数据也要通过颜色空间转换成RGB才能显示 可最近在研究stagefright视频显示时发现 根本找不
  • 【Android开发】一文全面解析Framework层

    前言 上一篇文章从Native角度讲解了Android进程管理的相关概念 本文将继续从上层的Framework中的进程启动 销毁场景和优先级处理 以及它们与四大组件的种种关联 来逐步解析Android进程管理的其他关键要素 进程的启动 An
  • 史上最全Android性能优化方案解析

    Android中的性能优分为以下几个方面 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 一 布局优化 布局优化的本质就是减少View的层级 常见的布局优化方案如下 在LinearLayout和RelativeLayout都可
  • Android面试题最新整理,2022年最新版

    每年的9月和10月 是互联网大厂疯狂招人的时期 也是程序员们跳槽的黄金期 不知道你有没有幻想过这样一个场景 大厂的面试官说 恭喜你通过面试 明天来办理入职吧 今天 为大家整理了2022年Android大厂面试真题 刷企业历年真题 助你轻松搞
  • xml命名规则

    Android开发 布局xml文件命名注意事项 不能包含任何大写字母 2012 02 22 14 49 22 转载 标签 android xml 文件 it 分类 Android开发 在开发Android应用时 会接触到布局文件 一般在 工
  • Android studio创建秘钥提示JKS密钥库使用专用格式。建议使用“keytool -importkeystore -srckeystore....

    1 复制图中 内的内容 keytool importkeystore srckeystore F AndroidTestKey testtow jks destkeystore F AndroidTestKey testtow jks de
  • JNI入门基础

    环境安装 想要使用jni进行ndk开发 我们首先要安装下面这些工具 否则直接从入门到放弃 下载ndk支持 在Android studio中下载上图中框选的两个工具 版本号自己任意选一个 下载完成之后 Android Studio就拥有了进行
  • 印象深刻的实战经历——Android 如何生成多渠道文件

    作者简介 小曾同学 com 一个致力于测试开发的博主 主要职责 测试开发 CI CD 如果文章知识点有错误的地方 还请大家指正 让我们一起学习 一起进步 座右铭 不想当开发的测试 不是一个好测试 如果感觉博主的文章还不错的话 还请点赞 收藏

随机推荐

  • 女生渴望的十大瞬间

    author skate time 2010 11 16 女生渴望的十大瞬间 偷看他们牵着手在街上闲逛 忽然之间 他将她拽停 伸手轻轻地将眼睑下的一根睫毛拨开 她顿感幸福 拨走睫毛不过是弹指之间的小事 却充分说明他对她的注意力100 集中
  • R语言倾向性评分:匹配

    本文目录 准备数据 matchIt包进行PSM 使用随机森林计算PS 主要匹配方法选择 匹配后数据的平衡性检验 cobalt包 统计检验衡量均衡性 结果可视化 不平衡怎么办 其他问题 参考资料 倾向性评分 Propensity Score
  • 逆向爬虫23 Javascript基础进阶

    Javascript基础进阶 一 JS中的常用功能介绍 非交互 1 1 定时器 在JS中 有两种设置定时器的方案 语法规则 t setTimeout 函数 时间 经过xxx时间后 执行xxx函数 5秒后打印我爱你 t setTimeout
  • 我理解的分类、目标检测、目标识别、目标定位、目标跟踪

    分类 判断一张图片是什么类别 不需要给出物体的位置信息 目标检测 找到图中所有的目标和它们的位置 可能有多个目标 目标识别 输出一张图片中是不是包含目标 单个目标 目标定位 输出目标的确切位置 单个目标 举个例子 检测画面中是否包含某个品牌
  • VUE中动态改变字体大小

    VUE中动态改变字体大小 父组件将自己的数据传递送给子组件展示 子组件监听click操作 emit发送出去 父组件监听通过emit发送的信息 改变控制字体大小的postFontSize 通过style展示
  • 4.2用Effect实现多纹理化效果

    4 2用Effect实现多纹理化效果 前面我们介绍了一个使用像素着色器实现的多纹理化 这里用Effect框架重新给于实现 读者可以比较两者之间的异同 体会Effect框架给我们带来了哪些方面的改善 4 2 1着色器 下面是着色器代码 该代码
  • sqlmap的用法,sqlmap -r

    sqlmap结合burpsuit进行sql注入漏洞查找 配置好burpsuit和浏览器之间的代理 网上方法很多 创建一个记事本 准备写入参数使用 1 在sqlmap根目录下创建list txt 你也可以在其他地方创建 待会写上目录就行 2
  • Mysql 数据库介绍

    目录 数据库 1 数据库的介绍 2 数据库的分类 3 数据库的作用 4 数据库特点 5 小结 关系型数据库管理系统 1 关系数据库管理系统的介绍 2 SQL的介绍 3 小结 MySQL数据库 1 MySQL数据库的介绍 数据库 1 数据库的
  • python引用、浅拷贝、深拷贝

    在python中 对象的赋值往往是通过 进行的 但是由于 右边的类型方式不一样 所以产生变量虽然值相同 但是在内存中的地址值不同 可能会造成内存空间的浪费 如题所示 对象赋值中存在三种类型情况的赋值 引用赋值 引用赋值l2 l1 首先创建个
  • vue3中的reactive函数声明数组

    vue3中reacitve函数如何声明一个响应式数组 如以下案例
  • 2021最新 阿里云搭建饥荒专用服务器

    前几天我一朋友在steam上邀请我一起玩饥荒 可是联机的时候 总是一卡一卡的 好不容易玩的正尽兴的时候 我朋友突然有事就离开了房间 好不容易打的怪 建的家 房主一退就不能再次玩了只能等待他回来 针对这样个的问题 我决定自己搭建饥荒的专有服务
  • 【matlab】:matlab中如何三维画球?

    首先介绍一个函数ellipsoid 这个函数是在三维立体空间画椭圆用的 这个函数参数如下 ellipsoid x y z x1 y1 z1 x y z代表了椭球的中心 x1 y1 z1代表了x y z方向的分量 然后如果是要画球的话 把这三
  • HTML5+CSS3小实例:简单又好看的加载动画效果

    HTML5 CSS3做一个简单又好看的加载动画效果 一个三色圆环转动 再加圆环内部文字转动 效果虽然简单 但第一次看到还是很惊艳的 最主要一点 代码真的超简单的 效果 源码
  • 曲线拟合

    问题解决 给你一个二维的序列 你如何用多项式进行曲线拟合 一阶直线拟合 二阶抛物线拟合 并非阶次越高越好 看拟合情况而定 曲线拟合 clear clc syms s 声明一个符号变量 详细参考 https jingyan baidu com
  • PicoDet代码学习记录

    推理步骤 picodet s 320 coco yml Infer py main gt run Trainer py init self model create cfg architecture Picodet py from conf
  • Ubuntu20.04 中已经安装 Pytorch 但 Import 报错 - 解决记录

    01 问题描述 笔者使用的是 Ubuntu 20 04 3 LTS 在使用 PyTorch 训练模型的时候 torch 模块引用失败 报错信息是 OSError home wang local lib python3 8 site pack
  • CUDA学习笔记——cudaDeviceSynchronize()的理解

    内核是操作系统提供软件对计算机硬件进行访问的软件 内核启动是异步的 这意味着在内核完成执行之前 他将在启动gpu进程后立即将控制权返回给cpu线程 而cpu线程的下一步是应用程序的退出 在应用程序退出时 其将输出发送到标准输出的功能由操作系
  • 会议论文和期刊论文在写作上有什么区别?有什么侧重点?

    作为一名科研工作者 无论你是初入圈内的 小萌新 还是久经沙场的 老将 写论文都是我们的必经之路 而要想论文投中 就需要我们的积极努力啦 其中 杂志社以及很多大型学术会议的征稿就是很好的一个途径哦 不过这两者的论文要求是否一致呢 又是否匹配我
  • cocos2d之Box2D详解 鼠标关节实现

    cocos2d之Box2D详解 鼠标关节实现 DionysosLai2014 5 7 我们经常要移动物理世界中的某个物体 比方说石头 木块等 如果我们直接改变这些物体的位置 让这些物体跟随我们手指移动 即使这样是可行的 却违反了物理世界的基
  • Ubuntu16.04下安装Android机顶盒(Android4.4.2)NDK交叉编译环境

    Ubuntu16 04下安装Android机顶盒 Android4 4 2 NDK交叉编译环境 文章目录 Ubuntu16 04下安装Android机顶盒 Android4 4 2 NDK交叉编译环境 一 前言 二 ndk下载 三 ndk安