linux - 编译自定义内核时,modules_install 会导致错误

标签 linux makefile linux-kernel

我正在尝试安装自定义内核,一切都很顺利,除了当我运行 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/

相关文章:

linux - 如何避免文件中所有行开头的特定字符串?

c - 用 Valgrind 运行单元测试是不是有点矫枉过正?

linux - gnu makefile 通过要忽略的文件夹列表过滤源文件列表

linux - epoll()、互斥量和信号量之类的系统调用是如何在后台实现的?

linux - 内核构建 : how are the "torvalds" and "stable" repos related?

linux-kernel - Linux 设备驱动程序代码中是否需要自旋锁?

linux - 在 Linux 中模拟硬盘驱动器

linux - 制作 : Error on libowfat

来自命令行与环境的 Makefile 变量

linux - Linux 上的 NetBeans 标准输出和标准错误