在openwrt上编译一个最简单的ipk包

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)

  1. 在OPENWRT下执行make menuconfig,然后选择Utilities -> gpioctl为<M>,保存退出就可以了
  2. 在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

时间: 2024-10-08 20:50:36

在openwrt上编译一个最简单的ipk包的相关文章

SAP Cloud Platform integration上创建一个最简单的iFlow

登录SAP CPI控制台,点击这个铅笔图标进入工作区域: 选择一个已经存在的content package: 在这个content package里创建一个新的iFlow: 默认生成的iFlow模型如下.删除Sender,因为在这个最简单的iFlow里,我们采用timer方式触发: 删除Sender后如下图所示: 选择一个Timer作为iFlow触发器: 将tinmer拖拽到integration process区域,选择Scheduler属性,设置成Run Once-运行一次. 再拖拽一个Co

OpenWrt 上搭建代理服务器squid

想上网,且不受外部限制方法很多,VPN, DNS Proxy, 这次给大家介绍一下Web Proxy.我选的是Squid代理服务器,这款之前就有想研究的冲动, 苦于一直没有时间. 准备: OpenWrt上编译 #make menuconfig ->Network->Web Proxy->Squid. #make 烧写固件 网络拓扑图如下 一切都进展的很顺利. 到了下面就是特别苦恼的事情了,你会遇到千奇百怪的问题,全因一纸squid.conf, 这个配置文件整对了,你离成功也就不远了. 文

Linux下一个最简单的不依赖第三库的的C程序(2)

一个最简单的C程序,如下: main.c: int main() { char *str = "Hello World"; return 8; } 在64位平台上编译一个32位的程序,如下:(32位只是为了演示方便) gcc -m32 -o hello main.c ./hello echo $? 运行后 会看到结果是 8,说明程序正常.$?表示查看上一个命令的返回值 统计一下程序大小:7263字节, wc -c hello 7263 hello 通过 ldd 查看动态库的依赖,发现如

在 Mac OS 上编译 FFmpeg

本文转自:在 Mac OS 上编译 FFmpeg | www.samirchen.com 安装 Xcode 和 Command Line Tools 从 App Store 上安装 Xcode,并确保在 Xcode 的 Preferences -> Downloads -> Components 下安装好 Command Line Tools. 当然你也可以从 https://developer.apple.com/ 下载 Xcode 和 Command Line Tools. 安装 brew

Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)

刚刚买了一个网件wndr4300路由器,快递还没送来就已经开始琢磨刷机的事了.卖家提供了一个明月的op固件,里面功能超级多但是非常臃肿,我在hg255d上的使用经验告诉我这样臃肿的包非常耗费CPU资源,而且会导致网速变慢和无故重启.恩山上大神编译的几乎都是添加了很多应用的固件.而我只需要一个ss功能就够了,最好有luci界面,所以决定自己编译出ipk包放到路由器上使用opkg安装. 首先去openwrt ss的github官网,https://github.com/shadowsocks/ope

[编译] 1、第一个makefile简单例子

前言 本篇用一个最简单的例子引入makefile,教你编写第一个makefile 正文 在Download/aa文件夹下有a.c和makefile文件 1 [email protected]:~/Downloads/aa$ ls 2 a.c makefile 其中a.c为: 1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 for(i=0;i<10;i++) 6 { 7 for(j=2*i+1;j>0;j--) 8 { 9 prin

在阿里云上搭建一个简单的node服务器

一.阿里云服务器以及node环境的搭建 服务器可以去阿里云官网购买一个ECS云服务器,价格还是有点小贵的,如果想使用免费的阿里云服务器,那么阿里云官网每天也是有抢免费的服务器的,每天上午十点,新人能抢到为期半年的服务器. 然后有了服务器以后,首先搭建一个node的运行环境,保证node 能正常使用,这个不是本文的内容就不多加赘述了. 如果没有搭建的小伙伴可以参考这里. 二.远程服务器上的代码管理 在阿里云服务器上可以安装一个 git 版本控制器,将自己的代码放置在自己的 GitHub 上,然后在

Swifter.Json -- 在 .Net 平台上的一个功能强大,简单易用,稳定又不失高性能的 JSON 序列化和反序列化工具。

Swifter.Json Github Wiki 在 .Net 平台上的一个功能强大,简单易用,稳定又不失高性能的 JSON 序列化和反序列化工具. Swifter.Json 已经经过了大量测试和线上项目中运行许久来确保它的稳定性. 特性 1: 支持 .Net 上绝大多是的数据类型,且轻松扩展:包括但不限于:实体,字典,集合,迭代器,数据读取器和表格. 2: 支持 .Net 我已知的大多数平台,包括但不限于:.Net Framework 2.0+, .Net Core 2.0+, .Net St

如何在jenkins上新建一个项目及其简单配置

1.首先,点击[新建]进入选择页面,如下图(一般选择"构建一个自由风格的软件项目")     2.填好项目名称后,点击ok,跳转至如下页面,可以在这个页面进行项目的配置(包括拉源码.修改持续构建时间.打包部署前修改配置文件等) 3.General中的"丢弃旧的构建"可以设定持续构建的 4.在"参数化构建过程"中可以设置要构建的版本有哪些,如下 5.在源码管理模块可以设置源码地址(我们公司一般用的Git) 6.如果是自动化构建,可以在构建触发器中的