编译自定义内核时 modules_install 导致错误

When compiling a custom kernel modules_install results in an error

我正在尝试安装自定义内核并且一切正常,除非我 运行 生成 modules_install 结果如下:

ln: target ‘/lib/modules/4.2.0-rc4/source’ is not a directory
Makefile:1120: recipe for target '_modinst_' failed
make: *** [_modinst_] Error 1

我在 Makefile 中查找了第 1120 行,它包含以下内容:

_modinst_:
    @rm -rf $(MODLIB)/kernel
    @rm -f $(MODLIB)/source
    @mkdir -p $(MODLIB)/kernel

我在谷歌上搜索了很多,我发现它的发生(主要是我发现的)是由于 Makefile 中 EXTRAVERSION 变量中的额外 space 但没有 space 在我的 Makefile 中。

任何人都可以指出正确的方向吗?

编辑:

我按照下面评论中的建议做了 ls -al /lib/modules/4.2.0-rc4/。 没有源文件或源目录存在, 运行ning modules_installmake --trace 产生这个:

Makefile:1120: target '_modinst_' does not exist
rm -rf /lib/modules/4.2.0-rc4/kernel
rm -f /lib/modules/4.2.0-rc4/source
mkdir -p /lib/modules/4.2.0-rc4/kernel
ln -s `cd . && /bin/pwd` /lib/modules/4.2.0-rc4/source
ln: target ‘/lib/modules/4.2.0-rc4/source’ is not a directory
Makefile:1120: recipe for target '_modinst_' failed
make: *** [_modinst_] Error 1 

您没有包含第 1120 行出现的整个规则; mkdir 之后一定有更多您没有显示的文字。您至少需要显示足够多的规则,以便我们可以看到可能出了什么问题...特别是因为您的错误消息与 ln 有关,您需要显示包含 ln 命令的行。

但是,根据您从 make --trace 提供的信息,我敢打赌我知道出了什么问题。

问题是您的工作目录路径包含名称中带有 space 的目录。换句话说,如果你 运行 pwd 你会看到目录名称中有一个 space。或者,可能是其他一些特殊字符,但很可能是 space.

不要那样做:将当前目录重命名或移动到路径不包含 space.

的某个地方

假设您的路径类似于 /home/myself/My Source Code/info。那么ln命令为:

ln -s /home/myself/My Source Code/info /lib/modules/4.2.0-rc4/source

这是一个无效的命令,因为每个单词都被视为一个单独的参数,就像您写的一样:

ln -s '/home/myself/My' 'Source' 'Code/info' '/lib/modules/4.2.0-rc4/source'