Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305203
  • 博文数量: 79
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 789
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(79)

文章存档

2024年(1)

2023年(1)

2022年(2)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: LINUX

2015-08-03 16:54:45

工作之余开始尝试了解linux。首先按照书上的例子写一个内核模块,hellomod。
但是并不如预料中的那么简单。
1,按照书上的内容编写的hellomod.c文件,成功。
2,编写Make文件,

点击(此处)折叠或打开

  1. ifneq ($(KERNELRELEASE),)
  2. obj-m += hellomod.o
  3. else
  4.     PWD := $(shell pwd)
  5. default:
  6.     $(MAKE) -C /usr/src/linux-4.1.3 SUBDIRS=$(PWD) modules
  7.     @rm -rf *.mod.*
  8.     @rm -rf.*.cmd
  9.     @rm -rf *.o
  10.     @rm -rf Module.*
  11. clean:
  12.     rm -rf *.ko
  13. endif
3,之后在当前目录的命令行中输入~# make
4,报错了,错误是由于没有下载linux的源码导致
5,去网上下载了linux-4.1.3的源码,解压到/usr/src/linux-4.1.3中。虚拟机的内核版本是ubuntu 3.5.0-23-generic.
6,再进行编译,还是有错。原因是没有编译下载的linux-4.1.3导致缺少config文件,去源码根目录make一下,中端退出就可以,不然需要很长时间;
7,再回到hellomod目录下编译,提示缺少Module.symvers, 把原来/usr/src/linux-3.5.0-23-generic下的Module.symvers复制到linux-4.1.3中。再make oldconfig make prepare,make scripts
8,再进行编译,提示#MODULE LICENCE。搜索,去除前面的“#”,并将其改为MODULE_LICENSE;
9, 再进行编译,终于成功。
10, 装载模块,并查看。

学会跟编译器沟通,知道她想告诉你的信息。
阅读(1091) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~