linux清理编译记录,编译Linux内核过程记录

下载linux kernel 2.6.x版本,官方网站下载 。我下载的是2.6.18,下载这个版本来编译并没有什么特别的理由,我随机选择的。

将压缩包解压在usr/src目录下新建的linux-2.6.18目录下,然后cd linux-2.6.18进入该目录。

make menuconfig 使用文本方式配置编译选项。使用此命令编译前,需要安装libncurses5-dev,否则会报告

“  In   file   included   from   scripts/kconfig/lxdialog/checklist.c:24:

scripts/kconfig/lxdialog/dialog.h:31:20:   error:   curses.h:   没有那个文件或目录”

这个编译错误。

如果一切顺利,make menuconfig这个命令将会调出配置菜单窗口:

uid-20789961-id-484063.html

linux make menuconfig

可以根据上图中的操作说明在配置菜单中选择编译参数。有比较详细的Linux内核编译选项说明,可以参考。

配置完成后,就可以输入make命令来开始编译了。

我在编译的时候遇到了如下两个错误:

1。 ‘PATH_MAX’ undeclared ,

是在编译/scripts/mod目录下的sumversion文件时遇到了未定义的宏PATH_MAX,解决方法:

在/scripts/mod目录下的sumversion.c文件开始部分加入#include

即可,在include/linux目录下的limits.h文件中定义了这个宏。

2。 undefined reference to `__udivdi3′,undefined reference to

`__umoddi3′,根据网上查到的资料,是因为gcc4.3的版本较新,编译较老的内核版本时会出现这个问题,其实是GCC的一个bug。参考这两

个文档:,。解决方法:在根目录下的Makefile文件中,找到下面的内容:

CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \

-fno-strict-aliasing -fno-common

增加一行,修改成:

CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \

-fno-strict-aliasing -fno-common \

-fno-tree-scev-cprop

除此两处之外,没遇到其他的error,但是warning还是有一些的,对这些warning没仔细分析和清除。这样,n小时之后,make编译就成功完成了。

然后,make modules编译内核模块;make modules_install安装模块;make install安装内核。

cd /boot

mkinitramfs -o initrd.img-2.6.18 2.6.18 创建内核镜像。

update-grub 更新grub引导后,reboot重启,就可以在grub中选择新的内核来引导了。

参考资料:

原文链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值