zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    Centos6.5安装Oracle11.2.0.4 RAC(完整版)
    VMware搭建Oracle 11g RAC测试环境 For Linux
    Linux CentOS命令行界面字体重复问题解决记录
    SSH公钥认证(码云)
    Git 上传本地仓库到码云
    Git 相关工具及教程地址
    jdk8 新特性stream().map()
    PowerDesigner 使用记录
    IDEA 中.properties文件中文自动转Unicode编码及乱码问题
    idea在Maven Projects中显示灰色的解决办法
  • 原文地址:https://www.cnblogs.com/qingchen1984/p/6768602.html
Copyright © 2011-2022 走看看