我正在尝试安装自定义内核,一切都很顺利,除了当我运行 make 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
变量中有额外的空格,但我的 Makefile 中没有空格。
有人能指出我正确的方向吗?
编辑:
我按照下面评论中的建议做了
ls -al/lib/modules/4.2.0-rc4/
。
不存在源文件或源目录,并且使用 make --trace
运行 modules_install
会产生以下结果:
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
提供的信息,我敢打赌我知道出了什么问题。
问题是工作目录的路径包含名称中带有空格的目录。换句话说,如果您运行pwd
,您将看到目录名称中带有空格。或者,可能是其他一些特殊字符,但很可能是空格。
不要这样做:重命名或将当前目录移动到路径不包含空格的位置。
假设您的路径类似于 /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'
关于linux - 编译自定义内核时,modules_install 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827465/