16.应用程序软件包测试
本实验目标
掌握应用程序软件包的编译方法
掌握应用程序的安装使用
14.1 准备工作
跟上一个实验差不多,这里我们提供一个应用程序的软件包模板,存放在目录:“附件: 应用程序软件包模板 “当中 ,名称为: ”mydrv_app” ,我们要将该应用程序软件包放在 OpenWrt 的一个特定的目录下面: openwrt/trunk/package/
14.2 配置 OpenWrt 支持软件包的编译
回到目录: openwrt/trunk/
输入命令: make menuconfig
配置过程如下:
1 ) 选择 Utilities
2)选择我们的应用程序 mydrv_app,按 y 选中
14.3 应用程序软件包源码介绍
我们找到应用程序软件包,发现它的结构组成跟驱动程序软件包是一样的, Makefile 大体相同,直接找到源码:
$cd mydrv_app
$cd src
$vi mydrv_app.c
源码如下:
#include <stdio.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h>
int main(int argc , char** argv)
{
int fd;
int num = 1;
//打开驱动模块
fd = open("dev/mydrv" , O_RDWR|O_NONBLOCK);
if(fd < 0)
{
printf("can't open /dev/mydrv\n");
return -1;
}
//函数测试 write(fd,&num,1);
read(fd,&num,1);
ioctl(fd,1,1);
close(fd);
return 0;
}
相信写过 C 程序的都看得懂这些代码了,非常简单,首先打开驱动模块,然后从应用 层调用函数即可!
14.4 编译应用程序软件包
好的,回到 openwrt/trunk/ 目录下,依次输入下列命令进行编译:
make package/mydrv_app/compile V=99
make package/mydrv_app/install V=99
make package/index V=99
编译没有出现 Error 即表示完成,编译后的固件存放在目录:
openwrt/trunk/bin/ramips/packages/base
14.5 应用程序的安装和使用
我们把编译得到的固件下载到开发板中(SSH 网络服务进行下载) ,下载完成后如图:
好的,现在就可以进行应用程序的安装了:
安装完成之后,在确定上一个实验的驱动加载完成后,运行应用程序:
说明: 如果需要自己的驱动程序软件包和应用程序软件包,只需要修改 Makefile 和 源码中的名字即可,直接替换名称!
本实验可能遇到的问题:
opkg install xxx.ipk 时提示:
satisfy_dependencies_for: Cannot satisfy the following dependencies for xxx 问题原因: openwrt 分为两个版本,一个是 trunk 版本,一个是 backfire 版本,我们
用的是 trunk 版本,即测试版本,这个版本每天都在更新;这个错误是因为 openwrt 版本 和 ipk 模块版本不相同导致的!
解决方法:
方法一
版本。
方法二
把驱动程序软件包或者应用程序软件包(即 ipk 模块)编译到 openwrt 中形成相同
尝试强制安装: opkg install xxx.ipk --force-depends
声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者爱学习de小乌龟所有,原文出处。若您的权利被侵害,请联系删除。
本文标题:(自学编程做app)(app编程自学)
本文链接:https://www.51qsb.cn/article/m8rdb.html