Invaild Module Format linux中hello world 程序编写
2014-08-12 15:53
267 查看
最近正在学习linux驱动,一般接触一个新领域都是从Hello World 开始的。但是就是这样的一个简单的Hello World 程序却涉及到很多问题。
网上的教程以及一些书籍都会介绍你怎么去写程序,却一般不介绍环境的搭建,殊不知环境的搭建对于初学者而言很重要。要是身边没有高手帮你搭环境,语法可能不会击垮你,但是环境就会让你不知所错。下面我介绍一下搭环境最简单的方法。
驱动的核心概念是模块,模块需要加载到内核中。通常书籍都是这样告诉我们的,我们的linux操作系统的内核是发行版本,都是经过厂商修改过的,容易出现问题。然后就是i让你去kernel.org中下载内核。然后进行编译升级。但是我问过驱动人员才明白一般不会出现问题。并且我升级后,系统和原来的是有差距的,也不好用,为什么不用原来的系统内核呢?
一般书籍都没告诉,但是我用的系统的内核真的很好用。在写Makefile时需要指明内核的路径,在/usr/var里面就有系统的内核源码。用uname -r 查看系统的系统的内核源码,然后选择就可以搞定。
当然也还有一种简单的方法就是 KERNELDIR ?= /lib/modules/$(shell uname -r)/build
在装载的时候通常还会遇到 Invaild Module Format 这也是由于内核与系统内核不一致所导致的。 建议:
1.按照上述办法,就不会出现这个问题。
2.不怕系统难看,不好用,下载一个新的内核升安装,也不会出现这个问题,当然路径要相应的改为你下载的源码路径。
网上的教程以及一些书籍都会介绍你怎么去写程序,却一般不介绍环境的搭建,殊不知环境的搭建对于初学者而言很重要。要是身边没有高手帮你搭环境,语法可能不会击垮你,但是环境就会让你不知所错。下面我介绍一下搭环境最简单的方法。
驱动的核心概念是模块,模块需要加载到内核中。通常书籍都是这样告诉我们的,我们的linux操作系统的内核是发行版本,都是经过厂商修改过的,容易出现问题。然后就是i让你去kernel.org中下载内核。然后进行编译升级。但是我问过驱动人员才明白一般不会出现问题。并且我升级后,系统和原来的是有差距的,也不好用,为什么不用原来的系统内核呢?
一般书籍都没告诉,但是我用的系统的内核真的很好用。在写Makefile时需要指明内核的路径,在/usr/var里面就有系统的内核源码。用uname -r 查看系统的系统的内核源码,然后选择就可以搞定。
当然也还有一种简单的方法就是 KERNELDIR ?= /lib/modules/$(shell uname -r)/build
在装载的时候通常还会遇到 Invaild Module Format 这也是由于内核与系统内核不一致所导致的。 建议:
1.按照上述办法,就不会出现这个问题。
2.不怕系统难看,不好用,下载一个新的内核升安装,也不会出现这个问题,当然路径要相应的改为你下载的源码路径。
相关文章推荐
- 39种语言编写的Hello World程序
- 用Python编写运行Hello World程序
- C# 使用17方法编写Hello World程序(语法深度)
- CentOS6.4(linux)下编写C程序(hello world)步骤及注意事项
- VC6.0配置汇编环境并编写第一个Hello World程序
- 使用C#编写17种Hello World程序
- 6个变态的C语言编写“hello world”程序的解释(2)
- Qt Creator安装和hello world程序编写
- 【跟我一起开辟Qt之路】(3)编写我们第一个Qt程序Hello World
- 编写FireFox的Extension Hello World程序小结
- 用Eclipse编写Hello World程序
- 关于android hello world程序的编写
- 一、Qt Creator的安装和hello world程序的编写
- 一、Qt Creator的安装和hello world程序的编写
- 一、Qt Creator的安装和hello world程序的编写
- 在Redhat9 Linux下安装java开发环境,并编写“Hello world”程序
- 一、Qt Creator的安装和hello world程序的编写
- 你用过几种语言:39种语言编写的Hello World程序
- 使用Eclipse编写第一个“Hello World!”程序
- 6个变态的C语言编写“hello world”程序的解释(1)