详细记录在迅为iMX6开发板中运行可执行文件

news2024/12/25 10:26:21

本文主要为了记录通过在虚拟机Ubuntu系统编译生成的可执行文件canitf如何运行在迅为的iMX6开发板上,中间涉及到的一些操作相对来说比较固定,因此可以整理成参考步骤以便之后使用时来依照执行。

一、生成可执行文件

首先在Ubuntu系统对应目录终端运行如下命令进行NDK编译生成可执行文件

/home/yinlong/Music/sdkapp/android-ndk-r14b-linux-x86_64/android-ndk-r14b/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk

 接着可以找到当前所在目录生成的可执行文件

二、将文件转移至开发板内

1.手动转移文件

通过USB线连接开发板与电脑,并且将开发板的USB用途(打开开发板主屏幕下拉即可看到)的选项设置为文件传输

此时,在电脑上可以找到开发板的存储空间

打开内部存储设备,接看到如下图所示的存储结构,需要注意的是,这是位于开发板的SD卡的位置,此时就可以把在Ubuntu生成的libs文件放到其中,在这里我选择放入Download目录下

需要注意的是,直接从Ubuntu系统拖拽文件的话是无法放入到此文件夹下的,还需先从虚拟机拖拽到自己电脑上,再从电脑拖拽到开发板的存储结构当中

2.开发板内找到libs文件验证

执行完上面的步骤文件就已经存储在开发板中了,想要验证的话可以打开开发板找到设置,点击设置中的存储设备与USB

 再点击最下方的浏览,进入内部存储空间

还记得我们刚刚是将文件存储在Download目录下,所以打开内部存储空间的Download即可看到之前放进去的libs文件夹

这也可以验证我们之前的操作是无误的。

三、使用adb shell运行可执行文件

虽然此时生成的可执行文件已经在开发板内,但由于是放在SD卡中,由于开发板的一些设置,我们无法运行位于此处的可执行文件,所以我们需要将其转移到开发板内别的存储目录中,再去运行,这需要使用adb shell工具。具体如下步骤:

1.设置adb shell

在电脑中打开命令提示符,执行下面命令,以root身份进入到adb shell中。

注意:开发板需要是获取root权限的情况下才能成功执行此步骤,怎样获取root权限可以参考【北京迅为】iTOP-i.MX6开发板使用手册_v1.9的第27章27.5节:Android6.0.1-获得root权限

注意:执行adb devices这条命令的时候很有可能会出现device unauthorized的提示,这一问题我已解决,请参考博文:成功解决Android设备adb连接后显示device unauthorized) 

注意:执行adb root命令时开发板设备上可能会弹出窗口,大致意思是...是否允许USB调试,都点击确定即可

adb devices
adb root
adb shell

执行完上述命令,可以看到如下图显示的样子,root@...#代表是以root身份操纵开发板,便于之后修改文件权限等各项操作 

2.复制文件到其他目录

由于我们的libs文件仍放在SD卡内,我们可以通过命令行去看一下,执行下面的命令进入到SD卡download目录

cd /sdcard/download

 再执行ls命令,的确可以看到此目录下有我们刚才放进去的libs文件夹

由于在此目录下没有办法运行可执行文件, 接着执行下面命令,将其转移到其他目录中,这里我是放在了/data/local/tmp目录下,当然也可以选择其他的目录,但不可选/sdcard中的目录去存放

cp -r libs /data/local/tmp

 接着我们跳转到再执行ls命令,会明确看到libs文件夹已复制过来

cd /data/local/tmp

ls

3.修改文件权限

由于我真正要运行的可执行文件是放置于libs目录下的可执行文件canitf,因此跳转到其所在的目录

cd /data/local/tmp/libs/armeabi-v7a

但是接下来如果直接去执行它,会提示我们Permission denied,也就是没有权限去运行该文件,这是由于文件的权限此时还是设置的不可读写的状态

这就需要我们修改文件权限,由于此时是超级用户root的状态,可以直接运行如下命令来设置文件状态以便我们运行

chmod 777 canitf

4.运行可执行文件 

修改完文件权限,执行命令就可以成功执行文件了 

./canitf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7-11 到底是不是太胖了

分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 据说一个人的标准体重应该是其身高&#xff08;单位&#xff1a;厘米&#xff09;减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材&#xff08;即 | 真实体重 − 标准体重 | < 标…

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘1. 引言2. 梯度可视化3. 特征重要性分析4. 结论PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 在机器学习和深度学习…

哈夫曼树(赫夫曼树、最优树)详解

目录 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 什么是哈夫曼树 构建哈夫曼树的过程 哈弗曼树中结点结构 构建哈弗曼树的算法实现 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 路径&#xff1a;…

“西游记“中的项目管理:如何驾驭你的“取经之路”

​1.​引言 自古以来&#xff0c;文学作品不仅仅是为了娱乐&#xff0c;它们也为我们提供了生活的智慧和经验。中国的古典文学巨著《西游记》便是其中的佼佼者&#xff0c;其中的故事和角色为我们提供了丰富的人生哲理和管理智慧。但你可能会问&#xff0c;一个古老的神话故事…

Windows11 Docker Desktop 启动 -wsl kernel version too low

系统环境&#xff1a;windows11 1&#xff1a;docker下载 Docker: Accelerated Container Application Development 下载后双击安装即可 安装后启动Docker提示&#xff1a;Docker Desktop -wsl kernel version too low 处理起来也是非常方便 1:管理员身份启动&#xff1a;…

Python 处理 Excel 表格的 14 个常用操作

目录 1. 安装依赖库 2. 导入库 3. 读取Excel文件 4. 写入Excel文件 5. 创建工作表 6. 访问工作表 7. 读取单元格数据 8. 写入单元格数据 9. 获取行数和列数 10. 过滤数据 11. 排序数据 12. 添加新行 13. 删除行或列 14. 计算汇总统计 总结 无论是数据分析师、财…

CoordAtt注意力网络结构

源码&#xff1a; import torch import torch.nn as nn import math import torch.nn.functional as Fclass h_sigmoid(nn.Module):def __init__(self, inplaceTrue):super(h_sigmoid, self).__init__()self.relu nn.ReLU6(inplaceinplace)def forward(self, x):return self.…

杂记 | 记录一次使用docker安装gitlab-runner的过程(馋哭了)

文章目录 01 前情提要02 编写docker-compose.yml03 启动与注册04 流水线部署 01 前情提要 前不久使用docker部署好了自己的gitlab服务&#xff0c;简直香惨了。 上集传送门&#xff1a;记录一次使用Docker安装gitlab-ce的过程&#xff08;含配置交换内存&#xff09; 现在&am…

postgresql的在windows下的安装

postgresql的在windows下的安装 下载安装步骤超级用户设置密码本地化设置安装信息安装完成 查看postgresql服务pgAdmin的使用打开命令 行工具查询数据库版本 创建数据库 下载 官网地址 https://www.postgresql.org/ 下载页面 https://www.postgresql.org/download/ windows下…

Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理

大家都知道&#xff0c;AOP 底层是动态代理&#xff0c;而 Java 中的动态代理有两种实现方式&#xff1a; 基于 JDK 的动态代理 基于 Cglib 的动态代理 这两者最大的区别在于基于 JDK 的动态代理需要被代理的对象有接口&#xff0c;而基于 Cglib 的动态代理并不需要被代理对…

TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka

TiDB数据库从入门到精通系列之六&#xff1a;使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka 一、技术流程二、搭建环境三、创建Kafka changefeed四、写入数据以产生变更日志五、配置 Flink 消费 Kafka 数据 一、技术流程 快速搭建 TiCDC 集群、Kafka 集群和 Flink 集群创建 c…

离谱的Bug

离谱的 Bug Bug 情况发现 Bug修改 Bug其他感受历史 Bug火星Spirit号Mars Global Surveyor任务 Bug 情况 有一次&#xff0c;我在开发一个网页应用程序时&#xff0c;遇到了一个令人目瞪口呆的Bug。这个Bug出现在一个特定的页面上&#xff0c;当用户点击某个按钮时&#xff0c;…

07微服务的事务管理机制

一句话导读 在单体应用程序中&#xff0c;事务通常是在单个数据库或单个操作系统中管理的&#xff0c;而在微服务架构中&#xff0c;事务需要跨越多个服务和数据库&#xff0c;这就使得事务管理变得更加复杂和困难。 目录 一句话导读 一、微服务事务管理的定义和意义 二、微…

ORCA优化器浅析——CDXLScalar Base class for representing scalar DXL operators

CDXLScalar类作为Base class for representing scalar DXL operators&#xff0c;该类只是定义一些接口&#xff0c;其中实现了GetDXLOperatorType函数&#xff0c;其返回EdxloptypeScalar&#xff0c;代表scalar DXL operators。 class CDXLScalar : public CDXLOperator{ pr…

迅捷视频工具箱:多功能音视频处理软件

这是一款以视频剪辑、视频转换、屏幕录像等特色功能为主&#xff0c;同时附带有视频压缩、视频分割、视频合并等常用视频处理功能为主的视频编辑软件。该软件操作简单易用&#xff0c;即使没有视频处理经验的用户也可以轻松上手。将视频添加到工具箱对应功能后&#xff0c;简单…

01- vdom 和模板编译源码

组件渲染的过程 template --> ast --> render --> vDom --> 真实的Dom --> 页面 Runtime-Compiler和Runtime-Only的区别 - 简书 编译步骤 模板编译是Vue中比较核心的一部分。关于 Vue 编译原理这块的整体逻辑主要分三个部分&#xff0c;也可以说是分三步&am…

sklearn机器学习库(二)sklearn中的随机森林

sklearn机器学习库(二)sklearn中的随机森林 集成算法会考虑多个评估器的建模结果&#xff0c;汇总之后得到一个综合的结果&#xff0c;以此来获取比单个模型更好的回归或分类表现。 多个模型集成成为的模型叫做集成评估器&#xff08;ensemble estimator&#xff09;&#xf…

RabbitMq-1基础概念

RabbitMq-----分布式中的一种通信手段 1. MQ的基本概念&#xff08;message queue,消息队列&#xff09; mq:消息队列&#xff0c;存储消息的中间件 分布式系统通信的两种方式&#xff1a;直接远程调用&#xff0c;借助第三方完成间接通信 消息的发送方是生产者&#xff0c…

爬虫逆向实战(九)--猿人学第十三题

一、数据接口分析 主页地址&#xff1a;猿人学第十三题 1、抓包 通过抓包可以发现数据接口是api/match/13 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cookie是否加密&#xff1f; 在“cookie”模块…

python数据分析需要学哪些,python数据分析要学多久

大家好&#xff0c;小编为大家解答python数据分析应该学什么软件的问题。很多人还不知道python数据分析需要什么基础&#xff0c;现在让我们一起来看看吧&#xff01; 根据调查结果&#xff0c;十大最常用的数据工具中有八个来自或利用Python。Python广泛应用于所有数据科学领域…