编译升级Kernel-2.6.9内核

3 views
Skip to first unread message

zhiwen hu

unread,
Jun 3, 2008, 11:55:30 PM6/3/08
to huzhi...@gmail.com, tige...@googlegroups.com
1。下载2.6.9的内核

wget http://www.kernel.org/pub/linux/ker…ux-2.6.9.tar.gz

2。在/usr/src目录下解压内核

tar zvxf /下载的路径/linux-2.6.9.tar.gz

3。配置

# make mrproper
# make menuconfig
make mrproper 是清理代码树的动作,保证源代码是干净的

4.编译
make

5。安装
make modules
make modules_install
make install

6.在编译内核的时候,最好按照内核源代码目录中的README文档中指定的gcc版本编译,否则可能会出现编译时语句结构错误。2.6.9的内核建议使用GCC-2.95.3编译。

安装 GCC-2.95.3
预计所需编译时间: 1.5 SBU
预计所需硬盘空间: 130 MB

6.1安装 GCC

如果你把这个包缺省的优化参数(包括 -march 和 -mcpu参数)改变的话,它会有很不良的表现。最好不要优化这个包。
因此,如果你定义了任何优化参数的话,比如CFLAGS 和 CXXFLAGS,我们劝你在编译GCC时unset或修改它们。

我们这里安装老版本的GCC是为了在第八章里编译Linux内核。内核开发者推荐使用这个版本的GCC,新一些的GCC也能编译成功,
但我们推荐你遵守内核开发者的建议,使用这个版本来编译内核。

注: 这里我们不安装 C++ 编译器或库文件。然而,你可能想安装它们,
请参考http://www.linuxfromscratch.org/blf…neral/gcc2.html.

我们把这个老版本的GCC安装到非常规的/opt前缀下,是为了避免与 /usr前缀下的系统GCC发生冲突。

运用补丁,并做一个小改动:

patch -Np1 -i ../gcc-2.95.3-2.patch #网上的文档建议打patch,但是这几步我没有做
patch -Np1 -i ../gcc-2.95.3-no-fixinc.patch #
patch -Np1 -i ../gcc-2.95.3-returntype-fix.patch #
echo timestamp > gcc/cstamp-h.in #

GCC的文档推荐在源码目录外的专用目录下编译GCC:

mkdir ../gcc-2-build
cd ../gcc-2-build

编译和安装gcc:

../gcc-2.95.3/configure –prefix=/opt/gcc-2.95.3 \
–enable-shared –enable-languages=c \
–enable-threads=posix
make bootstrap
make install

其它设置

GCC 2.95.3的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、
库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当
的设置之后编译器才能顺利地找到并使用它们。

6.2 gcc、g++、gcj的设置

要想使用GCC 2.95.3的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的
方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径:

% which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 2.95.3中的gcc、g++、gcj等命令
在/usr/bin目录下分别做一个符号连接:

mv gcc gccold
mv cpp cppold
ln -s /opt/gcc-2.95.3/bin/gcc gcc
ln -s /opt/gcc-2.95.3/bin/cpp cpp

6.3 库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了。

例如,如果GCC 2.95.3安装在/opt/gcc-2.95.3目录下,在RH Linux下可以直接在命令行上执行或者在文件/etc/profile中添加下面一句:

setenv LD_LIBRARY_PATH /opt/gcc-2.95.3/lib:$LD_LIBRARY_PATH
或者
LD_LIBRARY_PATH=/opt/gcc-2.95.3/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
7.测试gcc版本是否正确。
gcc -v
Reading specs from /opt/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)

参考资料:
Installing GCC ( http://gcc.gnu.org/install/ )




Reply all
Reply to author
Forward
0 new messages