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

这几天在编译新内核,在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
                          ^
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)