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

本文主要为了记录通过在虚拟机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系统拖拽文件的话是无法放入到此文件夹下的,还需先从虚拟机拖拽到自己电脑上,再从电脑拖拽到开发板的存储结构当中

扫描二维码关注公众号,回复: 16876052 查看本文章

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

猜你喜欢

转载自blog.csdn.net/danielxinhj/article/details/132314494