在openwrt上编译最简单的一个ipk包文件
2014-04-14 15:07
1686 查看
1 什么是opkg
Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。
opkg update 更新可以获取的软件包列表
opkg upgrade 对已经安装的软件包升级
opkg list 获取软件列表
opkg install 安装指定的软件包
opkg remove 卸载已经安装的指定的软件包
2 什么是ipk
openwrt下的程序安装包,用户可以很方便地安装程序。
3 ipk与内核模块
什么是内核模块呢?这对于初学者无非是个非常难以理解的概念。内核模块是Linux内核向外部提供的一个插口, 其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。
模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。
总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。
按上面的说法,虽然openwrt编译出的内核模块也是一个ipk包,但它是无法独立地运行的,它们的名字会以kmod-为开头而取。
4 编译最简单的ipk包
我这里使用的openwrt源码为12.09(attitude adjustment)
在OPENWRT下执行make menuconfig,然后选择Utilities -> gpioctl为<M>,保存退出就可以了
在OPENWRT下执行make package/gpioctl/compile编译就会得到该ipk了
想要清理的话使用以下命令:
5 验证运行
将这个gpioctl_1.0-1_ar71xx.ipk包文件使用ftp上传到路由器上去。
运行结果:
运行时若不带任何参数的话会有这样的提示信息:
说明该ipk包已经正常安装运行了。
更进一步的内容稳步至此: http://wiki.openwrt.org/doc/devel/packages
Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。
opkg update 更新可以获取的软件包列表
opkg upgrade 对已经安装的软件包升级
opkg list 获取软件列表
opkg install 安装指定的软件包
opkg remove 卸载已经安装的指定的软件包
2 什么是ipk
openwrt下的程序安装包,用户可以很方便地安装程序。
3 ipk与内核模块
什么是内核模块呢?这对于初学者无非是个非常难以理解的概念。内核模块是Linux内核向外部提供的一个插口, 其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。
模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。
总之,模块是一个为内核(从某种意义上来说,内核也是一个模块)或其他内核模块提供使用功能的代码块。
按上面的说法,虽然openwrt编译出的内核模块也是一个ipk包,但它是无法独立地运行的,它们的名字会以kmod-为开头而取。
4 编译最简单的ipk包
我这里使用的openwrt源码为12.09(attitude adjustment)
在OPENWRT下执行make menuconfig,然后选择Utilities -> gpioctl为<M>,保存退出就可以了
在OPENWRT下执行make package/gpioctl/compile编译就会得到该ipk了
想要清理的话使用以下命令:
make package/gpioctl/clean
5 验证运行
将这个gpioctl_1.0-1_ar71xx.ipk包文件使用ftp上传到路由器上去。
ftp> put gpioctl_1.0-1_ar71xx.ipk gpioctl.ipk local: gpioctl_1.0-1_ar71xx.ipk remote: gpioctl.ipk 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. 2177 bytes sent in 0.00 secs (4745.5 kB/s) ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 2177 Apr 14 06:29 gpioctl.ipk -rw-r--r-- 1 0 0 172 Apr 02 07:10 minicom.log 226 Directory send OK. ftp>
运行结果:
运行时若不带任何参数的话会有这样的提示信息:
gpioctl dirin|dirout|get|set|clear gpio
说明该ipk包已经正常安装运行了。
更进一步的内容稳步至此: http://wiki.openwrt.org/doc/devel/packages
相关文章推荐
- 内核编译Openwrt制作ipk动态更新文件
- 一个简单的创建ndk文件目录结构来编译源文件的框架的小脚本
- 一步一步写一个简单通用的makefile(四)--写一个通用的makefile编译android可执行文件
- 利用JavaCompiler编译java文件(一个简单封装的工具类)
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- 在openwrt上编译一个最简单的ipk包
- Google PB协议学习记录--一个简单的例子--如何编译.proto文件为.java文件
- 内核编译Openwrt制作ipk动态更新文件
- 一个简单的 C 程序文件,经过 0、编写,1、预处理,2、编译,3、链接,终于生成了一个可执行文件
- 内核编译Openwrt制作ipk动态更新文件
- 一个简单的groovy script生成的class文件及其反编译
- 使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- 发布一个简单而又灵活的基础编译环境文件:compiler.mk,欢迎大家共同改进之
- 1.编写一个简单的C语言程序:计算输入多个整数的平均值,并将此程序分割成多个小文件。 2.为第1题中的程序编写makefile文件,用make编译后改成返回最小值,再编译,观察有多少文件不需要重新
- OpenWrt 内核编译制作ipk动态更新文件
- 一个简单的java文件反编译案例
- 编译基础——如何用g++编译自己的库,以及一个简单的makefile文件
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- freetype 在android编译时上的一个makefile文件