我正在尝试安装自定义内核,一切正常,除非我运行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/
。
没有源文件或源目录,并且使用modules_install
运行make --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
答案 0 :(得分:2)
您没有包含第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'