1

我正在尝试按照教程在 Linux 中创建自定义 USB 驱动程序,我希望使用 g++ 在我的 Eee PC 上使用 Ubuntu Eee 开发这个东西。不幸的是,要遵循本教程,我需要 linux/module.h 头文件。据我了解,我需要编译内核才能使其正常工作。我以前从未编译过内核,我找到的所有说明都是针对桌面 Ubuntu 的。

我在我的 Eee 上这样做,因为如果我能做到这一点并在课堂项目中使用它,我将在课堂上获得额外的学分。

我正在关注的教程在这里:http ://www.linuxjournal.com/article/7353 和这里:http ://www.linuxjournal.com/article/4786

4

2 回答 2

5

大多数(全部?)主要的 Linux 发行版不仅分发 linux 内核,而且还为其应用了许多补丁。从而提高稳定性并添加许多功能。 所以你会想要使用 Ubuntu 的软件包系统来获取 Ubuntu 的补丁内核源代码!

您可能不需要重建内核! 最有可能的是,您只需要当前内核的 kernel-headers 包来编译您的 USB 驱动程序。假设您将其构建为内核模块,然后您可以使用 modprobe 或 insmod 加载它。(lsmod 和 rmmod 也很有用。)

如果您确实需要重建内核,那很容易。(很简单,我使用内核构建来测试我的硬件。) 网络上有很多内核构建 HOWTO。尝试找出作为模块需要哪些选项、要编译的内容以及要省略的内容会很有趣。您可以使内核更小,但您可能会错过其中的一些内容。



修改为:

我记得做“sudo apt-get install linux-headers-eeepc”,我还需要更多吗?如果不是,那么这些标头在哪里,因为我的包含“linux/module.h”的测试代码无法编译

应该有一种方法可以列出该 linux-headers-eeepc 包中的所有文件。我来自 RedHat/RPM 世界。但我猜想dpkg --contents linux-headers-eeepcdpkg --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。

或者,尝试:

%定位 linux/module.h | grep 'linux/module.h$'

或者

% find / -path '*/linux/module.h'

(该发现可能需要一段时间才能完成......)

于 2009-01-29T20:34:53.880 回答
2

从这里:Ubuntu内核/编译 开始:sudo apt-get install linux-kernel-devel fakeroot build-essential makedumpfile

可能只是阅读该链接

更深入的细节在这里

于 2009-01-29T20:41:26.333 回答