1

我最终想修改和编译现有的 Linux USB 存储驱动程序并对其进行测试。第一步,我想按原样编译模块。

我下载了最新的 Linux 内核(版本 3.12)并将其解压到~/linux-3.12.

我找到了我要编译的驱动程序:drivers/usb/storage,但是当我运行 make 时,我得到了以下错误:

make: *** No targets.  Stop.

我在网上找到了很多指南,但没有一个适用于 USB 存储驱动程序。我想要的只是编译这个模块并获取 .ko 以便我可以测试它。

注意:我正在运行 Ubuntu 13.04 64 位和uname -r输出3.8.0-30-generic- 我不确定这是否是问题,但我之前设法编译了整个内核。我现在不想这样做,因为它需要一个 eon。

4

2 回答 2

3

如果你想构建drivers/usb/storage模块,你可以这样做:

make M=drivers/usb/storage

从内核树的根目录。在这样做之前,您需要确保您的配置与正在运行的内核的配置相同。

于 2013-11-15T15:10:51.103 回答
2

您不能简单地获取一个内核的源代码并使用它来构建另一个内核的模块。该模块需要使用与内核本身相同的源和相同的配置来构建。

基本上,您需要找到您正在运行的 Ubuntu 内核的源代码。在 Ubuntu 中,就像在 Debian 中一样,这可以通过“apt-get source”来完成。包名可能类似于“linux-image-3.8-2-amd64”。

获得源代码后,您需要找到正在运行的内核的配置。幸运的是 Ubuntu 将它保存在 /boot/config-3.8-....

将该配置作为 .config 复制到内核源代码树并运行“make oldconfig”。现在您应该能够构建模块(假设它尚未构建到您的内核中!)。

于 2013-11-15T08:16:41.197 回答