LINUX内核编译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX内核编译相关的知识,希望对你有一定的参考价值。

root@ubuntu:/usr/src# ls
linux-3.2.0-38-generic-pae linux-3.2.8 linux-3.2.8.tar.gz patch-3.2.8.gz
root@ubuntu:/usr/src# patch -p0 < patch-3.2.8
bash: patch-3.2.8: 没有那个文件或目录
root@ubuntu:/usr/src# patch -p0 < patch-3.2.8.gz
patch unexpectedly ends in middle of line
patch: **** Only garbage was found in the patch input.
root@ubuntu:/usr/src# cd linux-3.2.0-38-generic-pae
root@ubuntu:/usr/src/linux-3.2.0-38-generic-pae# make menuconfig
HOSTCC scripts/basic/fixdep
In file included from /usr/include/i386-linux-gnu/bits/posix1_lim.h:157:0,
from /usr/include/limits.h:145,
from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:169,
from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/syslimits.h:7,
from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:34,
from scripts/basic/fixdep.c:114:
/usr/include/i386-linux-gnu/bits/local_lim.h:39:26: 致命错误: linux/limits.h:没有那个文件或目录
编译中断。
make[1]: *** [scripts/basic/fixdep] 错误 1
make: *** [scripts_basic] 错误 2
root@ubuntu:/usr/src/linux-3.2.0-38-generic-pae#
出现了这个问题 怎么解决 ?????????????????
求内核编译的详细步骤

参考技术A 到kernel.org下载最新的内核,然后解压, cd 到你解压的目录
1. make menuconfig
2. make -j4
3. make modules_install
4. make install
---------------------------------------
OK!
参考技术B patch出错.
先解压
tar xzf patch-3.2.8.gz

编译linux-2.6.18内核出错

lhg@ThinkPad-L430:/usr/src/linux-2.6.18$ sudo make -j4
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CHK include/linux/compile.h
CC kernel/mutex.o
LD kernel/built-in.o
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `.text.lock.mutex':
mutex.c:(.sched.text+0x1aba): undefined reference to `__mutex_lock_slowpath'
mutex.c:(.sched.text+0x1ac4): undefined reference to `__mutex_unlock_slowpath'
make: *** [.tmp_vmlinux1] Error 1
请各位网友帮忙解决,谢谢!
gcc 版本是4.6.3的

参考技术A 这个不好查,建议你检查一下配置过程有没有哪儿没有考虑到。追问

我使用的是Ubuntu 12.04的系统配置,3.11.0-19的内核,该配置用在2.6.32.63内核上可以编译通过,用在2.6.18内核就编译通不过了,出现了上述编译错误。

追答

从高版本到低版本的兼容问题,仔细检查你的内核配置吧。

追问

采用2.6.18内的默认配置,还是这个编译问题,这就排除了是内核配置的问题了。

追答

你这个内核源码是不是之前没有用过的那种?如果你没有做错,那么就是这两个需要自己实现,写一些代码

追问

不是配置的问题,是gcc版本的问题,用4.4.7编译就正常,不会报上面那个错误。

追答

又是编译器的问题...解决了就好。

本回答被提问者采纳

以上是关于LINUX内核编译的主要内容,如果未能解决你的问题,请参考以下文章

linux编译内核步骤

Linux内核源码如何编译

编译linux内核问题

编译linux-2.6.18内核出错

Linux 内核编译 Linux 内核 ③ ( 安装 ncurses | 安装 flex | 安装 bison | 打开 Linux 内核编译配置菜单 )

如何重新编译linux内核