我正在尝试按照教程在Linux中创建自定义USB驱动程序,我希望在使用g ++的Ubuntu Eee的Eee PC上开发这个东西.不幸的是,按照教程我需要linux/module.h头文件.根据我的理解,我将需要编译内核以使其工作.我以前从未编译过内核,我发现的所有指令都是针对桌面Ubuntu的.
我在我的Eee上这样做,因为如果我能在课堂上使用它并在课堂项目中使用它,我会在课堂上获得额外的学分.
我关注的教程如下:http://www.linuxjournal.com/article/7353 ,在这里:http://www.linuxjournal.com/article/4786
大多数(全部?)主要Linux发行版不仅分发Linux内核,还应用了大量补丁.从而提高稳定性并增加许多功能. 因此,您将需要使用Ubuntu的软件包系统来获取Ubuntu的修补内核源代码!
你也许不是需要重新编译内核! 最有可能的是,您只需要当前内核的kernel-headers包来编译USB驱动程序.假设您将其构建为内核模块,则可以使用modprobe或insmod加载它.(lsmod&rmmod也很有用.)
如果你确实需要重建内核,那很容易.(这很简单,我使用内核构建来测试我的硬件.)网上 有很多内核构建HOWTO.尝试找出你想要的模块,你想要编译的内容以及你想要遗漏的内容,你会有很多乐趣.你可以让内核变小,但你可能会错过一些东西.
修改后补充:
我记得做过"sudo apt-get install linux-headers-eeepc",我还需要更多吗?如果没有那么那些标题在哪里因为我的测试代码包含"linux/module.h"不能编译
这里应该有办法列出所有的文件在Linux的头,EeePC的包.我来自RedHat/RPM世界.但我猜想像dpkg --contents linux-headers-eeepc或dpkg --listfiles linux-headers-eeepc.你可能不得不玩这个.
或者,通过http://packages.ubuntu.com/判断,像linux-headers-2.6.27-7这样的软件包包含文件/usr/src/linux-headers-2.6.27-7/include/linux/module. H.所以你可能只想在/usr/src/*/include/linux/module.h中查看.
或者,尝试:
%locate linux/module.h | grep'linux/module.h $'
要么
%find/-path'*/linux/module.h'
(这个发现可能需要一段时间才能完成...)