Cra*_*ild 2 linux makefile linux-kernel
我正在尝试安装自定义内核,一切正常,除了当我运行 make 时会产生modules_install以下结果:
ln: target \xe2\x80\x98/lib/modules/4.2.0-rc4/source\xe2\x80\x99 is not a directory\nMakefile:1120: recipe for target '_modinst_' failed\nmake: *** [_modinst_] Error 1\nRun Code Online (Sandbox Code Playgroud)\n\n我在 Makefile 中查找了第 1120 行,其中包含以下内容:
\n\n_modinst_:\n @rm -rf $(MODLIB)/kernel\n @rm -f $(MODLIB)/source\n @mkdir -p $(MODLIB)/kernel\nRun Code Online (Sandbox Code Playgroud)\n\n我用谷歌搜索了很多,我发现它的发生(主要是我发现的)是由于EXTRAVERSIONMakefile 中的变量中有额外的空间,但我的 Makefile 中没有空间。
有人能指出我正确的方向吗?
\n\n编辑 :
\n\n我遵循下面评论中的建议并执行了 \n ls -al /lib/modules/4.2.0-rc4/。\n没有源文件或源目录存在并且运行modules_install时会产生make --trace以下结果:
Makefile:1120: target '_modinst_' does not exist\nrm -rf /lib/modules/4.2.0-rc4/kernel\nrm -f /lib/modules/4.2.0-rc4/source\nmkdir -p /lib/modules/4.2.0-rc4/kernel\nln -s `cd . && /bin/pwd` /lib/modules/4.2.0-rc4/source\nln: target \xe2\x80\x98/lib/modules/4.2.0-rc4/source\xe2\x80\x99 is not a directory\nMakefile:1120: recipe for target '_modinst_' failed\nmake: *** [_modinst_] Error 1 \nRun Code Online (Sandbox Code Playgroud)\n
您没有包含第 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
Run Code Online (Sandbox Code Playgroud)
这是一个无效的命令,因为每个单词都被视为一个单独的参数,就像您写的一样:
ln -s '/home/myself/My' 'Source' 'Code/info' '/lib/modules/4.2.0-rc4/source'
Run Code Online (Sandbox Code Playgroud)