前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详细记录在迅为iMX6开发板中运行可执行文件

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

作者头像
丹牛Daniel
发布2023-10-17 15:51:40
1840
发布2023-10-17 15:51:40
举报

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

一、生成可执行文件

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

代码语言:javascript
复制
/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调试,都点击确定即可

代码语言:javascript
复制
adb devices
adb root
adb shell

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

2.复制文件到其他目录

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

代码语言:javascript
复制
cd /sdcard/download

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

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

代码语言:javascript
复制
cp -r libs /data/local/tmp

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

代码语言:javascript
复制
cd /data/local/tmp

ls
3.修改文件权限

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

代码语言:javascript
复制
cd /data/local/tmp/libs/armeabi-v7a

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

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

代码语言:javascript
复制
chmod 777 canitf
4.运行可执行文件 

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

代码语言:javascript
复制
./canitf
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、生成可执行文件
  • 二、将文件转移至开发板内
    • 1.手动转移文件
      • 2.开发板内找到libs文件验证
      • 三、使用adb shell运行可执行文件
        • 1.设置adb shell
          • 2.复制文件到其他目录
            • 3.修改文件权限
              • 4.运行可执行文件 
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档