+ -
当前位置:首页 → 问答吧 → 内核编译出错

内核编译出错

时间:2007-12-18

来源:互联网

到最后了却失败了,伤心!(*跟有一个帖子很象,但那帖子好象每人关注了,希望斑竹别删,谢谢!)
linux-2.6.16.38.tar.bz 和 linux-2.6.16.27-utf8_input-1.patch
然后make mrproper
make menuconfig
make
第一次的时候,由于内核的选项(就是make menuconfig)没选对,开机的时候出现了状况:
PLEASE APEND A correct "root="boot option ?

我配置的时候是
root (hd0,0)
root=/dev/hda1
然后回头,根据金老师的要求重新make menuconfig,选好!
就出现了这样的错误:
root:/sources/linux-2.6.16.38# make
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `set -e; echo ' CHK include/linux/version.h'; mkdir -p include/linux/; if [ `echo -n "2.6.16.38 .file null .ident GCC:(GNU)4.0.3 .section .note.GNU-stack,,@progbits" | wc -c ` -gt 64 ]; then echo '"2.6.16.38 .file null .ident GCC:(GNU)4.0.3 .section .note.GNU-stack,,@progbits" exceeds 64 characters' >&2; exit 1; fi; (echo \#define UTS_RELEASE \"2.6.16.38 .file null .ident GCC:(GNU)4.0.3 .section .note.GNU-stack,,@progbits\"; echo \#define LINUX_VERSION_CODE `expr 2 \\* 65536 + 6 \\* 256 + 16`; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; ) < /sources/linux-2.6.16.38/Makefile > include/linux/version.h.tmp; if [ -r include/linux/version.h ] && cmp -s include/linux/version.h include/linux/version.h.tmp; then rm -f include/linux/version.h.tmp; else echo ' UPD include/linux/version.h'; mv -f include/linux/version.h.tmp include/linux/version.h; fi'
make: *** [include/linux/version.h] Error 2

我的livecd是6.2.5
重新下了linux-2.6.16.27.tar.bz(cd 里是linux-2.6.16.38.tar.bz)出现同样的问题
请问怎么回事,研究了一个很久,快20个小时,了哭!

作者: daist   发布时间: 2007-12-18

给楼主一点建议:
1,严格按照手册来
2,你确信你需要inux-2.6.16.27-utf8_input-1.patch这个补丁吗?不需要的补丁不要打。
同时你用2.6.16.27的补丁打在2.6.23.8上无异于驴唇对马嘴。
3.手册和包要对应起来。

作者: 不开花   发布时间: 2007-12-18

手册就是打的这个包 ,我后来也下了重新下了linux-2.6.16.27.tar.bz,打了补丁 ,还是错!

作者: daist   发布时间: 2007-12-19

有点不解,怎麽最近的人连编译内核都没有经验的就开始来搞 LFS 的呢?

编译内核已是很基本的了,连基本功都没有的话,一般是很难真正体验 LFS 的精髓。。。

作者: d00m3d   发布时间: 2007-12-19

不要打这个补丁,然后换2.6.19.7内核看看
研究了20小时,呵呵,不算长.....

作者: csfrank   发布时间: 2007-12-19

用liveCD里面的内核再编译一次,一定要按照手册上面来

作者: beyond1314   发布时间: 2007-12-21

lfslivecd-x86-6.2-5 的对不?
我知道!
按手册肯定是对的啦。
编译出错, make clean && make mrproper 之后重编译,或者删掉重解包编译,看是什么效果?

楼主用的那个是去年的了。
新版的也很好用。
内核头文件用 2.6.22.6 的就行了,再新的编译 gpm 不通过。

作者: tfkdmwmqtr   发布时间: 2007-12-21

引用:
作者: d00m3d
有点不解,怎麽最近的人连编译内核都没有经验的就开始来搞 LFS 的呢?

编译内核已是很基本的了,连基本功都没有的话,一般是很难真正体验 LFS 的精髓。。。
似乎已经挺久了,这种现象,每天看一下各个版面的浏览人数就知道了~

lfs版以前是仅次于准系统的副班长,现在的人数比slack和arch还要多~还真是一窝蜂~

作者: shooter   发布时间: 2007-12-21

成功者有强烈的动机
成功者有必胜的信念
没有失败,只有暂时的停止成功。

大概在最初接触LFS的时候,我算是很差的一个了。
楼主加油 !

作者: tfkdmwmqtr   发布时间: 2007-12-21

其实,配置内核是最难的一步,其他的,复制粘贴就可以了。

作者: hohoxu_hao115   发布时间: 2007-12-21

引用:
作者: hohoxu_hao115
其实,配置内核是最难的一步,其他的,复制粘贴就可以了。
没错,本人也深有同感

作者: beyond1314   发布时间: 2007-12-22

配置内核也算难?。。。无语

作者: d00m3d   发布时间: 2007-12-22

引用:
作者: d00m3d
配置内核也算难?。。。无语
配置成功的人,当然觉得简单~

我第一次配置内核,根本不知道自己机器需要配置些什么项目~
面对这么多选项难免不知道要配些什么的~
难是应该的,成功一次就好了~

作者: shooter   发布时间: 2007-12-24

编译内核算得上是很难很难的一步。
在这上面我花的时间很多,从四月份到现在总共编译内核的次数应该是接近100次了。编译一次内核通常看完所有的选项就算花上两小时到三个多小时。我今年就跟 LFS 耗上了,我所有的时间都花在这上面了。
编译内核,我想说的是,先编译一个初始的,只要能让系统启动就可以了,尽可能的编译到内核。之后再找个发行版的对照着加上一些需要的。比如,与网络有关的选项,文件系统,等等,编译为模块,这些应该保守一点,可能少一些选项,软件运行就有问题了。
另外,楼主用的软件版本以及内核版本都很旧。建议看新手册重头开始做。

作者: tfkdmwmqtr   发布时间: 2007-12-24

tfkdmwmqtr 兄經歷無數 LFS/CLFS/CBLFS,眼看兄弟現在的水平已今非昔比,對編譯內核還有難度?

我自己覺得編譯內核不算難,反而是煩,但對內核作合適的選擇/調校是應該做的事情。

作者: d00m3d   发布时间: 2007-12-25

引用:
作者: d00m3d
tfkdmwmqtr 兄經歷無數 LFS/CLFS/CBLFS,眼看兄弟現在的水平已今非昔比,對編譯內核還有難度?

我自己覺得編譯內核不算難,反而是煩,但對內核作合適的選擇/調校是應該做的事情。


一直都觉得奇怪,可能是在虚拟机下的原因,必须要用initrd.img文件才能正确加载,并进入系统。

如果没有initrd.img文件就提示错误。

所以我觉得新手还是好好研究下内核比较好,就像我,呵呵,5次LFS之后停止工作,进入内核编译,如何正确,如何优化还是有很多需要研究的。

作者: tuishu   发布时间: 2007-12-28

我不觉得难哦,跟dOOm3d版主的感觉一样,配置内核真的很烦,我估计今后的内核配置会更加的烦,因为让选择的东西会越来越多,不知道能不能在配置的方式上有所改进

作者: sspipipipi   发布时间: 2007-12-28

引用:
作者: tuishu
一直都觉得奇怪,可能是在虚拟机下的原因,必须要用initrd.img文件才能正确加载,并进入系统。

如果没有initrd.img文件就提示错误。

所以我觉得新手还是好好研究下内核比较好,就像我,呵呵,5次LFS之后停止工作,进入内核编译,如何正确,如何优化还是有很多需要研究的。
如果你用的是虚拟机,最好是用真实环境做几次。

将适合你的机器的,你需要的选项都编译到内核,不需要的选项尽可能的裁掉。这样更符合 LFS 的精神--简洁、干练。

如果不想内核过大,可以将一些选项编译到模块。
加密选项中的可以都编译为模块。文件系统中的,ext2 / ext3 / reiserfs-3.6 / xfs 这些,将 ext2 / ext3 编译到内核,根文件系统为 reiserfs-3.6 的要将 reiserfs 编译到内核。如果是 xfs ,应该将 xfs 编译到内核。其它的文件系统编译为模块。

作者: tfkdmwmqtr   发布时间: 2007-12-28