Compilation 内核编译和菜单配置

Compilation 内核编译和菜单配置,compilation,linux-kernel,virtual-machine,vmware-fusion,Compilation,Linux Kernel,Virtual Machine,Vmware Fusion,我是linux的新手,在vmware fusion中使用ubuntu(4.4.0-64-generic)。我正在学习如何编译内核。因此,我从kernel.org下载了内核(linux-4.4.52.tar.xz)。但是当我输入makemenuconfig时,有一些错误 root@ubuntu:/usr/src/linux-4.4.52# make menuconfig HOSTCC脚本/basic/fixdep 在/usr/include/x86_64-linux-gnu/bits/posix

我是linux的新手,在vmware fusion中使用ubuntu(4.4.0-64-generic)。我正在学习如何编译内核。因此,我从kernel.org下载了内核(linux-4.4.52.tar.xz)。但是当我输入makemenuconfig时,有一些错误

root@ubuntu:/usr/src/linux-4.4.52# make menuconfig
HOSTCC脚本/basic/fixdep
在/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:160:0中包含的文件中,
从/usr/include/limits.h:143,
来自/usr/lib/gcc/x86_64-linux-gnu/5/include fixed/limits.h:168,
来自/usr/lib/gcc/x86_64-linux-gnu/5/include fixed/syslimits.h:7,
来自/usr/lib/gcc/x86_64-linux-gnu/5/include fixed/limits.h:34,
来自scripts/basic/fixdep.c:114: /usr/include/x86_64-linux-gnu/bits/local_lim.h:38:26:致命错误:linux/limits.h:没有这样的文件或目录
编译已终止。
scripts/Makefile.host:91:目标“scripts/basic/fixdep”的配方失败
生成[1]:*[scripts/basic/fixdep]错误1
Makefile:444:目标“脚本\u基本”的配方失败
make::
[scripts_basic]错误2


我已经安装了头文件,并做了我能做的一切。有人能帮我解决这个问题吗?

你的符号链接错了
/usr/src/linux-4.4.0-64-generic/include/linux
是错误的目录,不能链接到
/usr/include/linux

内核有两组头:内核内部头和用户API头。后者位于
uapi
目录中,它们是用户空间程序应该看到的

编译自己的内核时,可以使用安装该内核的用户空间头。
当您使用发行版的内核时,只需(重新)安装适当的软件包(在您的情况下,
linux-headers-generic
),这样做是正确的,只要您以后不乱动这些文件。

您安装了哪些头文件?linux-headers-4.4.0-31,linux-headers-4.4.0-31-generic,linux-headers-4.4.0-62、linux-headers-4.4.0-62-generic、linux-headers-4.4.0-64、linux-headers-4.4.0-64-generic。这些都是我在/usr/src中找到的标题文档。但是
/usr/include/linux
指向哪里?我想它指向4.4.0-64-generic。原因我键入了rm-rf asm linux scsi,ln-s/usr/src/linux-4.4.0-64-generic/include/asm-generic asm-s/usr/src/linux-4.4.0-64-generic/include/linux-ln-s/usr/src/linux-4.0-64-generic/include/scsi scs。4.4.0-64-generic是我当前的内核版本。是否存在
/usr/include/linux/limits.h
?感谢您的回复。但是,当我在/usr/src/linux-4.4.52中执行make heardes\u install\u all或make headers\u install命令时,它仍然有错误“linux/limits.h:没有这样的文件或目录”。我走错方向了吗?解决此问题的步骤是什么?除非您知道自己在做什么,否则不要将发行版的软件包和您自己的定制混为一谈。通过重新安装来修复包。您的意思是我应该在/usr/src/linux-headers-4.4.0-64-generic下执行“make hearde_install”?您已经手动创建了自己的符号链接
/usr/include/linux
。你必须以某种方式将它恢复到原始状态。(和
make
仅从内核源代码运行,并且仅在正确编译后运行。)