您的位置:首页 > 运维架构 > Linux

Linux编译内核遇到找不到linux/limits.h的问题

2014-08-26 21:41 1236 查看
这几天在编译新内核,在make menuconfig 的时候老是报下面这个错误:

 HOSTCC  scripts/basic/fixdep

In file included from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:160:0,

                 from /usr/include/limits.h:143,

                 from /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/limits.h:168,

                 from /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/syslimits.h:7,

                 from /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed/limits.h:34,

                 from scripts/basic/fixdep.c:114:

/usr/include/x86_64-linux-gnu/bits/local_lim.h:38:26: fatal error: linux/limits.h: 没有那个文件或目录

#include <linux/limits.h>

                          ^

compilation terminated.

make[1]: *** [scripts/basic/fixdep] 错误 1

make: *** [scripts_basic] 错误 2

在网上搜了好久,很多人遇到这个错误,可是就是找不到合适的解决方案。今天在濒临暴走之前找实验室一大神童鞋请教,终于在半小时内搞定了。

问题解决过程:

1)提示找不到linux/limits.h,即/usr/include/linux/路径下没有limits.h这个文件,想到可能是少了某个包,接下来的任务就是找到生成这个路径下limits.h文件的包;

2)两个需要掌握的命令:dpkg -l 打印出系统中安装的所有包; dpkg -L 包名 打印出该包生成的所有文件及其路径。

3)考虑到一般的头文件都是由 “XXX-dev” 这样名字的包生成的。于是首先用命令dpkg -l |grep "dev" 标出那些候选,就几个;

4)然后将候选的几个包,用dpkg -L 包名 | grep "linux/limits.h" 打印结果,有结果的即为正确的包。最后定位到包 “linux-libc-dev:amd64” ;

5)以为没有这个包,于是直接安装 apt-get install  linux-libc-dev:amd64。但发现并没有更新任何软件包。意思是安装了这个包,但是却没有在/usr/include/linux/路径下生成应该生成的limits.h文件。于是考虑将linux-libc-dev:amd64卸载后再重新安装。注意在卸载linux-libc-dev:amd64的时候还会卸载相关的几个包(大概7个左右,具体忘记了)。等卸载完成后,apt-get install linux-libc-dev:amd64,安装包,之后再将之前卸载的那几个相关的包一一安装上;

6)都安装好后再 make menuconfig,成功!!!大功告成啦。。。。。。。

折腾了好几天的问题终于解决了!!OMG ~~~~泪奔啊~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 内核编译