交叉编译arm Linux环境下的android-tools-adb

2023-11-19

前言

    项目使用Rockchip的3399挖掘机demo板,使用官方提供的Debian Linux SDK(官方github源码链接:https://github.com/rockchip-linux)进行开发定制。当前需要将Android上的调试工具adb移植到arm平台上运行,所以搜罗了网上的一堆教程和参考,最终本地交叉编译出了可以在RK3399(3399是armhf的)核心板上直接运行的adb工具。

    开发环境为Ubuntu1604。



一、下载桌面版Ubuntu1604的如下源码包:android-tools-adb,openssl,zlib。

    android-tools-adb源码包下载链接:https://packages.ubuntu.com/source/xenial/android-tools

    openssl-1.1.0源码包下载链接:https://www.openssl.org/source/

    zlib-1.2.8源码包下载链接:https://packages.ubuntu.com/xenial/zlib1g-dev

    注意:交叉编译armhf平台的adb工具,本地必须安装openssl和zlib库,直接用apt install是不行的,因为交叉编译时需要链接arm版本的库。最终交叉编译出来的openssl和zlib库,需要拷贝到本地/usr/arm-linux-gnueabihf/lib/目录下。



二、下载arm-linux-gcc交叉编译工具链。

    arm-none-linux-gnueabi-gcc下载地址:https://blog.csdn.net/alan00000/article/details/51724252

    arm-linux-gnueabihf-gcc下载地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc

    在Ubuntu1604上安装交叉编译工具链可以参考如下链接:https://blog.csdn.net/u010957054/article/details/58056863 



三、交叉编译openssl和zlib库。

3)交叉编译openssl库。

    1. 首先在终端命令行中运行配置命令(此步骤已经做过,不需要再做,可直接从第3步做起。当然有兴趣折腾的话,可以自己再配一次):./config no-asm -shared --prefix=$PWD/output/
   说明:no-asm  在交叉编译过程中不使用汇编代码代码加速编译过程。
               -shared  生成动态链接库。
               --prefix  指定安装编译生成文件的路径,如不指定则默认为当前目录。

    2. 其次修改当前目录下的 Makefile 文件(此步骤也已经做过,不需要再做,可直接从第3步做起。有兴趣自己折腾的话,可以自行配置修改):
   将 Makefile 第74行 “CROSS_COMPILE= ” 改为 “CROSS_COMPILE= arm-linux-gnueabihf-”(前提上电脑上已经安装了 arm 交叉编译工具,未安装的参考此链接:https://blog.csdn.net/u010957054/article/details/58056863
   或 https://blog.csdn.net/singleroot/article/details/54342935)。
   找到Makefile中有 “-m64” 的地方,全删之(共2处)。

    3. 最后,在终端命令行里面执行编译和安装命令:make && make install
   运行完毕后,会在当前目录下生成一个 “output” 目录,生成的交叉编译库文件、可执行文件和头文件等均在此目录下。

   将 “output/lib” 目录下的 “libcrypto” 和 “libssl” 开头的库文件全部复制到 “/usr/arm-linux-gnueabihf/lib/” 目录下即可。


    参考链接:
    https://www.cnblogs.com/ynxf/p/6375091.html
    https://blog.csdn.net/zqj6893/article/details/8778237


2)交叉编译zlib库。

    1. 首先在终端命令行中运行命令指定编译器:export CC=arm-linux-gnueabihf-gcc

    2. 其次运行配置命令:./configure --prefix=$PWD/output
   说明:--prefix  指定安装编译生成文件的路径,如不指定则默认为当前目录。

    3. 最后,在终端命令行里面执行编译和安装命令:make && make install
   运行完毕后,会在当前目录下生成一个 “output” 目录,生成的交叉编译库文件、可执行文件和头文件等均在此目录下。

   将 “output/lib” 目录下的 “libz” 开头的库文件全部复制到 “/usr/arm-linux-gnueabihf/lib/” 目录下即可。   


    参考链接:
    https://blog.csdn.net/npy_lp/article/details/6991704



四、交叉编译android-tools-adb工具。

    直接复制 android-tools-adb 源码包中 debian/makefiles 目录下的 adb.mkcore/adb 目录下,并改名为 Makefile 。然后在终端命令行中运行 export CC=arm-linux-gnueabihf-gcc 然后再运行 make 命令,即可编译生成 armhf 平台对应的 adb 可执行文件。

    将生成的 adb 可执行程序拷贝到3399目标板 /usr/bin/ 目录下,经验证,可以使用完整的 adb 调试命令。

    附上我上传到csdn的完整资源链接,可以一次性下载 android-tools-adb, openssl 和 zlib 全部资源:https://download.csdn.net/download/u011281197/10401217

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

交叉编译arm Linux环境下的android-tools-adb 的相关文章

  • 如何通过ADB关闭Wifi?

    我正在自动化 wifi 呼叫的测试程序 我想知道有没有办法通过 adb 关闭 打开 wifi 我想禁用 启用 wifi 或终止 wifi 呼叫 com movi al wificall 并重新启动它 是否可以通过 adb 和 shell 命
  • 无法将 Nexus 4 连接到 adb:未经授权

    我有一台运行 Android 4 3 的 Nexus 4 我正在尝试将该设备连接到运行 Windows 7 64 位的计算机 我安装了最新的驱动程序和最新的adb版本 我想我几乎尝试了所有方法 但仍然收到以下消息 C Program Fil
  • VirtualBox 上的 Android x86:Android 已连接但不在线

    我正在尝试使用 Oracle VirtualBox 配置 Android x86 运行机器 以便它可以与 Eclipse 一起使用 我在使我的虚拟机 在线 时遇到一些麻烦 我通过在 Android 终端模拟器中键入以下内容将手机连接到 ad
  • 如何在不启用USB调试的情况下使用adb tcpip?

    我已经阅读了很多关于 adb 和 tcpip 模式的文章 并且我可以创建无线 adb 连接 但前提是打开 USB 调试 我使用它的方式是这样的 USB调试已启用 call adb tcpip在计算机上 从 USB 切换到 tcpip 模式
  • Android 计算应用程序/进程的线程数

    我需要监视应用程序的行为并收集有关如何创建 销毁线程的统计信息 我知道 DDMS 有一个线程视图 可以实时显示此信息 但是我可以通过命令行获取相同的信息吗 我想创建自己的工具来记录这些信息并对其进行处理 澄清 我正在寻找的是一个可以通过 A
  • adb shell su 可以工作,但 adb root 不能

    我对解锁的 Galaxy S3 SGH T999 进行了 root 操作 现在 我正在努力奔跑adb root从 Windows命令提示符 但是 我得到了adbd cannot run as root in production build
  • 在使用 putExtra 的同时使用 ADB 启动活动

    我一直在尝试使用安卓文档 http developer android com tools help shell html确定如何使用 putExtra 启动活动 我的 putExtra 值是 String 类型 我尝试了 true 1 的
  • 如何从命令行发送 String[] 意图额外值?

    我的自动化测试通过发送意图adb shell am 但我无法指定一个额外的字符串数组 根据意图类文档 https developer android com reference android content Intent html put
  • Android Studio 3 中的“活动管理器状态”在哪里?

    Android studio 2 x 中有一个非常方便的调试功能 但目前 3 x 中没有 它有点隐藏在用户界面中 然后它会提示详细的活动管理器状态 我知道 我可以通过以下方式获取该输出adb shell dumpsys activity t
  • 在 Android-x86 上网本上使用 ADB 通过蓝牙调试应用程序

    我设法在我的上网本上设置了一个运行良好的 Android x86 启用了蓝牙并与我的 Windows 7 开发工作站配对 我最初希望通过 USB 使用 adb 就像我使用真正的手机一样 所以我插入了专用的 USB 公对公电缆 然后 什么也没
  • 安卓中的adb是什么?

    当我尝试运行 Android 程序时 出现以下错误 请解释一下到底是什么adb是的 如何重新启动呢 我收到以下错误 The connection to adb is down and a severe error has occured Y
  • 无法为 Kindle Fire HD 安装 ADB

    我正在尝试root它 尽管在我安装了正确的ADB驱动程序之后 当我插入我的Kindle fire HD 7 时 点燃火 gt Android 复合 ADB 接口 没有出现在设备管理器中 因此我无法执行root 我已将 0x1949 添加到
  • Genymotion 中运行的虚拟设备会定期在 ADB 中离线

    我有一个在 Genymotion 2 4 中运行的 Android 设备 如果重要的话 带有 Lollipop 图像 并通过 ADB 版本 1 0 32 从本地网络中使用 Eclipse 的另一台开发人员 PC 连接到它 没有连接问题 一切
  • 使用 applicationIdSuffix 时,React Native 应用程序将无法启动

    我在用 email protected cdn cgi l email protection and 设置的一部分 https github com Microsoft react native code push android setu
  • 如何使用adb shell输入来输入&符号?

    adb shell input text 不起作用 也不行adb shell input keyevent KEYCODE AMPERSAND 相关问题 7789826 https stackoverflow com questions 7
  • Adb安装进度条

    我是这方面的初学者 所以如果我问任何明显的问题 请介意我 我正在尝试安装一个apk到我的设备使用adb install apk apk但是 那apk大约有几百 MB 大 并且需要一些时间 我可以在命令窗口中实现某种进度条来显示进度吗 我见过
  • 我可以使用 adb shell 向我的应用程序发送命令吗

    我想找到一种方法来创建可以使用 adb shell 或类似命令发送到我的应用程序的命令 这样我就可以对程序进行一些小的更改 而不必每次更改任何内容时都重新加载应用程序 有没有办法打开 adb shell 并向正在运行的应用程序发送命令 如果
  • 安装apk时INSTALL_FAILED_NO_MATCHING_ABIS

    我尝试将我的应用程序安装到 Android L Preview Intel Atom 虚拟设备中 但失败并出现错误 INSTALL FAILED NO MATCHING ABIS 这是什么意思 INSTALL FAILED NO MATCH
  • 启动后台进程时ADB进程阻塞

    我正在尝试通过 ADB 在 Android 手机后台运行 shell 脚本 为了简单起见 我们让它睡眠 100 adb shell echo nohup sleep 100 gt data local tmp test sh sh data
  • 将数据库从 genymotion 模拟器拉到本地磁盘

    我在开发中使用 genymotion 当我创建数据库时 我在 genymotion 模拟器的 DDMS 文件夹中看不到它 在 google 上搜索时 我可以在 adb shell 上看到数据库 但不知道如何将数据库拉到本地磁盘以查看数据 有

随机推荐

  • 解构与迭代器

    开始 let x y x 1 y 2 正常的写法 let x y x 1 y 2 console log x y 1 2 let x y 1 2 console log x y 1 2 加上iterator方法 如果我们希望这段代码不报错
  • 计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。

    这九种运算分为7种二元运算 2种一元运算 用文字和例子来分别解释上面几个概念 7种二元运算 1 笛卡儿积 已知 如果算X1和X2的笛卡尔积 则 首先将属性 或者叫标题 A B C 和 D E 和在一块形成新的一组标题
  • python安装bert模型_BERT模型的简单使用(Python)

    不涉及原理 只是快速开始使用 更详细的请参考官方文档 https bert as service readthedocs io en latest index html 下载预训练模型 下载可能需要一些时间 等待的时候可以先去下一步把pyt
  • 某度翻译最新版Acs-Token逆向分析

    某度翻译最新版Acs Token逆向分析 免责声明 本文章中所有内容仅供学习交流使用 不用于其他任何目的 不提供完整代码 抓包内容 敏感网址 数据接口等均已做脱敏处理 严禁用于商业用途和非法用途 否则由此产生的一切后果均与作者无关 擅自使用
  • MySQL题库(4)

    301 考虑 Web 项目的安全性 MD5 算法的不可逆性可以保证加密数据的绝对安全 判断 题 A 正确 B 错误 正确答案 B 302 符合范式的数据表设计比反范式的数据表查询性能更高 判断题 A 正确 B 错误 正确答案 B 303 相
  • 关于文件描述符的close-on-exec标志位

    引言 我们在使用一些系统调用对文件描述符进行操作时 常常会碰到是否为文件描述符赋予CLOEXEC属性的情况 例如 open函数中的flags参数可指定O CLOEXEC标志 int open const char pathname int
  • 基于TF-IDF算法个人文件管理系统——机器学习+人工智能+神经网络(附Python工程全部源码)

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 模块实现 1 数据预处理 2 词频计算与数据处理 3 数据计算与对比验证 系统测试 工程源代码下载 其它资料下载 前言 本项目旨在通过应用TF IDF算法 将新下载的课件进行自动分
  • SQL中使用IN关键字时,因空数组替换参数导致了SQL语法错误

    场景 在近期的工作中 发现了这么一个问题 在某一搜索页面 需要同时查询多种订单类型 但在页面中未选择任何订单类型 API通过UI端传来的空订单类型数组进行查询时 抛出了SQL的语法错误 原SQL SELECT FROM dbo order
  • go get 下载包时提示 could not read Username

    问题 在下载公司内部的包时 出现如下提示 go get module example com somepkg common git ls remote q origin in somepath xxxxxxxxxxxxxxxxxxxxxxx
  • python 线程锁

    目录 1 线程安全介绍 2 threading5种常见锁 2 1 同步锁 互斥锁 Lock 1 基本介绍及相关方法 2 给案例加lock锁 3 with语句 2 2 递归锁Rlock 1 基本介绍及相关方法 2 给案例加递归锁 3 with
  • tensorflow InceptionNet

    InceptionNet 即 GoogLeNet 诞生于 2015 年 旨在通过增加网络的宽度来提升网络的能 力 与 VGGNet 通过卷积层堆叠的方式 纵向 相比 是一个不同的方向 横向 显然 InceptionNet 模型的构建与 VG
  • react之纯函数、函数组件、类组件、纯组件

    一 纯函数 Pure Function 定义 一个函数的返回结果只依赖于它的参数 并且在执行的过程中没有副作用 我们就把该函数称作纯函数 特点 1 函数的返回结果只依赖与它的参数 同一个输入只能有同一个输出 let foo a b gt a
  • numpy模块中axis的理解——以np.argmax为例

    numpy模块中axis的理解 以np argmax为例 np argmax参数数量及其作用 axis不同情况的示例 np argmax参数数量及其作用 np argmax是用于取得数组中每一行或者每一列的的最大值 常用于机器学习中获取分类
  • 注意力机制的分类

    目录 1 什么是注意力机制 2 注意力机制分类 3 代表算法 1 空间域代表算法 2 通道域代表算法 3 混合域代表算法 DANet CBAM 4 注意力机制的应用 1 什么是注意力机制 注意力机制通俗的讲就是把注意力集中放在重要的点上 而
  • linux内核驱动开发笔试题

    linux内核驱动开发笔试题 一 一些常规中举的C考题 第一题 写出下述程序结果 int m 3 1 4 7 2 5 8 3 6 9 int i j k 2 for i 0 i lt 3 i printf d m k i 问题所在 本题考点
  • redis默认过期时间:redis默认的是永不过期

    今天同事问我redis默认过期时间是多久 突然想起几年前想查一下redis默认过期时间是多久 搜到的博文全是打着 redis默认过期时间是多久 的标题在讲redis过期原理 正好闲来没事 又搜了下 几年过去了 还是一样 哪来那么多文不对题的
  • StackExchange.redis 实现模糊匹配批量查询

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net Helloantoherday article details 81286685 如果
  • 一、C++中queue和deque的区别

    1 先明白队尾和队首 back和front的联系 无论从哪个方向看 插入的地方就是队尾 所有的操作名字都与back有联系 插入端的另一端就是队首 所有的操作名字都与front有联系 其中queue的操作是 queue
  • jdbc连接mysql数据库,设置字符集编码

    jdbc连接mysql数据库 设置字符集编码 1 第一种方法 JDBC连接数据库时常会出现乱码的情况 那是因为我们的字符级与数据库的字符级不一样 我们通过定义url地址的时候定义字符级 sql代表你的数据库名称 所以当这种情况遇到乱码的时候
  • 交叉编译arm Linux环境下的android-tools-adb

    前言 项目使用Rockchip的3399挖掘机demo板 使用官方提供的Debian Linux SDK 官方github源码链接 https github com rockchip linux 进行开发定制 当前需要将Android上的调