开发环境为ubuntu.首先搭建编译环境。
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev texlive-lang-french gawk asciidoc libz-dev tex4ht git-core
下面就是下载源码,源码分两种,一种是最新版但不稳定,就是trunk版,一种是相对稳定版,backfire版
trunk版下载命令:svn co svn://svn.openwrt.org/openwrt/trunk/
backfire版下载命令:svn co svn://svn.openwrt.org/openwrt/branches/backfire/
如果不是最新下载,最好定期更新代码,命令为
./scripts/feeds update –a
./scripts/feeds install –a
接着就是编译了。编译方法如下:
make defconfig
make menuconfig进入定制界面,选择自己的设备类型。
make V=99

下面就是增加内核模块的方法了

进入package目录,创建模块目录
cd backfire/package
mkdir example
进入example目录,创建Makefile文件和代码路径
cd example
touch Makefile
mkdir src
 Makefile具体内容如下:

#
# Copyright (C) 2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mkPKG_NAME:=example
PKG_RELEASE:=1include $(INCLUDE_DIR)/package.mkdefine KernelPackage/exampleSUBMENU:=Other modulesTITLE:=example driverDEPENDS:=@LINUX_2_6FILES:=$(PKG_BUILD_DIR)/*.$(LINUX_KMOD_SUFFIX)KCONFIG:=
endefdefine KernelPackage/example/descriptionKernel module to example
endefEXTRA_KCONFIG:= \CONFIG_EXAMPLE=mEXTRA_CFLAGS:= \$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \MAKE_OPTS:= \ARCH="$(LINUX_KARCH)" \CROSS_COMPILE="$(TARGET_CROSS)" \SUBDIRS="$(PKG_BUILD_DIR)" \EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \$(EXTRA_KCONFIG)define Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/
endefdefine Build/Compile$(MAKE) -C "$(LINUX_DIR)" \$(MAKE_OPTS) \modules
endef$(eval $(call KernelPackage,example))

3.进入src目录,创建代码路径和相关源文件
cd src
touch example.c Kconfig Makefile
  example.c具体内容如下:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
/* hello_init ---- 初始化函数,当模块装载时被调用,如果成功装载返回0 否则返回非0值 */
static int __init hello_init(void)
{printk("I bear a charmed life.\n");return 0;
}
/* hello_exit ---- 退出函数,当模块卸载时被调用 */
static void __exit hello_exit(void)
{printk("Out, out, brief candle\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zhangjiefeng");

  Kconfig具体内容如下:

config EXAMPLEtristate "Just a example"helpThis is a example, for debugging kernel model.If unsure, say N.

  Makefile具体内如如下:

obj-$(CONFIG_EXAMPLE)    += example.o

  回到主路径 backfire/,编译选项配置保存并编译
make menuconfig
  Kernel modules --->
    Other modules --->
      kmod-example
  选项设置为M,保存退出
  然后编译该模块:
make package/example/compile
5.编译出的文件可以在主路径的以下路径找到
./staging_dir/target-mips_r2_uClibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko
./build_dir/linux-lantiq_ar9/example/ipkg-lantiq/kmod-example/lib/modules/2.6.32.33/example.ko
./build_dir/linux-lantiq_ar9/example/example.ko
./build_dir/target-mips_r2_uClibc-0.9.30.1/OpenWrt-SDK-lantiq-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1/staging_dir/target-mips_r2_uClibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko
./build_dir/target-mips_r2_uClibc-0.9.30.1/root-lantiq/lib/modules/2.6.32.33/example.ko

  注:我们使用./build_dir/linux-lantiq_ar9/example/example.ko

参考文档:

http://blog.chinaunix.net/uid-9217288-id-3060464.html

http://downloads.openwrt.org/kamikaze/docs/openwrt.html#x1-470002.1.3

http://blog.csdn.net/gubenpeiyuan/article/details/8024247

转载于:https://www.cnblogs.com/chengliu/p/3636364.html

openwrt增加内核模块的方法相关推荐

  1. openwrt配置内核驱动_openwrt增加内核模块的方法

    开发环境为ubuntu.首先搭建编译环境. sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf get ...

  2. Openwrt增加对 sd card 支持

    一.硬件平台 1.1 控制器:MT7620(A9内核) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwrt 官方15.05版本SDK开发包(CHAOS CALME ...

  3. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  4. php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法

    本文实例讲述了php_imagick实现图片剪切.旋转.锐化.减色或增加特效的方法.分享给大家供大家参考.具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使 ...

  5. 【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )

    文章目录 一.Expando 动态类简介 二.动态类创建 三.为动态类增加字段和方法 四.完整代码示例 一.Expando 动态类简介 Groovy 运行时 , 可以动态地创建一个类 , 该类称为 & ...

  6. 【自定义注解使用】增加service层方法访问日志

    目录 背景 自定义注解 动态代理/AOP 使用 总结 本文涉及到的技术有:SLF4J,JDK动态代理,AspectJ,Java自定义注解,Java反射. 背景 最近工作中发现为了方便排查服务器日志,公 ...

  7. 给Apache虚拟主机增加端口的方法

    这篇文章主要介绍了给Apache虚拟主机增加端口的方法,修改配置的方法很简单,需要的朋友可以参考下 找到你的apache安装目录,找到httpd.conf文件, 搜索#listen这一句,在下面增加 ...

  8. php如何向数组增加数据,php向数组中增加数据的方法是什么

    php向数组中增加数据的方法是什么? 使用函数array_push array_push()函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $arra ...

  9. 为什么Java在后来的版本中,给接口增加了默认方法、静态方法、私有方法?

    在业务发展过程中,发现某个功能是所有子类都需要的,那么我们该怎么办?给接口增加抽象方法吗?如果直接在接口增加抽象方法,那么所有已经写好的具体实现类就会报编译错误.因为具体类必须实现接口的全部抽象方法. ...

  10. 为类添加方法java_Java 7 : 为接口类增加“public defender 方法”

    Java 7 试图通过简易方式为接口增加新的方法,而接口的实现类并不需要真正的实现这些新增的方法,这在 Java 7 中是通过静态方法来实现,称之为虚拟扩展方法. 为了演示这个特性,我们用一个简单的例 ...

最新文章

  1. python fsolve_Python-optimize.leastsq()和optimize.fsolve()
  2. OpenCV(十四)图像阈值
  3. react-native for android windows开发环境搭建详细记录
  4. djangohttp://127.0.0.1:8000/media/test.jpg直接显示图片media配置
  5. react-navigation StackNavigator 快速点击会多次跳转页面
  6. Mysql存储过程老是报错_mysql中看看这个存储过程老是报错,该如何处理
  7. 「mac操作指南」WidsMob HEIC将HEIC/HEIF 转换为 JPEG/PNG/TIFF格式
  8. 虚拟服务器内存性能指标,vSphere 虚拟环境中超额配置 CPU、 内存和存储的比例推荐及规划简述...
  9. 有关于FireBug和FirePath安装和使用-学习笔记
  10. C# CAD二次开发之字体替换 文字样式 处理DBText
  11. 固体发动机内弹道matlab,固体火箭发动机内弹道性能的仿真研究
  12. 手机APP应用开发技术课程论文
  13. category theory 简介
  14. 计算机毕业设计——基于Spring Boot框架的在线导游预约系统
  15. Matlab GUI编程技巧(十二):menu创建菜单或菜单项
  16. 再论iPhone Push Notification
  17. 内存泄漏导致的浏览器崩溃
  18. 棋盘放芝麻用for循环写出步骤
  19. Python-冒泡排序函数
  20. 没有一颗凑数镜头,拍照最佳的三款手机,均是影像机皇标准

热门文章

  1. qfileinfolist 取中间_公司起名:网络公司名字起名寓意如何取寓意成功的网络公司名字...
  2. java ssh 学习_初学Java ssh之Spring 第三篇
  3. python键值对储存数据_在python中存储100万个键值对的列表
  4. android 扫描照片功能,巧把安卓手机打造成扫描仪:拍照识别文档、手写笔记转PDF(图)...
  5. Apache Jackrabbit Oak 1.12.0 发布,可扩展、高性能分层存储库
  6. 简谈百度坐标反转至WGS84的三种思路
  7. Bind 一些有趣的东西 【未完待续】
  8. Firebird 问题总结
  9. 使用delphi 开发多层应用(十四)使用Basic4android 显示kbmMW server数据
  10. 新手上路学习配置C,C++,GTK等开发环境