2022年linux内核编译步骤 .pdf
linux 内核编译步骤!-20010-05-22 1、下载源码包:linux-2.6.29.4.tar.bz2 2、解压压缩包,并移动到/usr/src下#tar-jxvf linux-2.6.29.4.tar.bz2#mv linux-2.6.29.4/usr/src 3、删除以前可能失败的编译配置信息#cd/usr/src/linux-2.6.29.4#make mrproper 4、内核模块配置,可以选择新的功能-例如支持 NTFS,无线网络,蓝牙等等#make menuconfig 5、创建压缩内核镜像(1)创建压缩内核镜像#make bzImage 遇到 gcc 版本过低,于是安装gcc-4.5.0,(2)安装 gmp,mpfr,mpc 先解压 gcc-4.5.0.tar.bz2#tar-jxvf gcc-4.5.0.tar.bz2 因为在配置gcc 的过程中出现错误:gcc configure:error:Building GCC requires GMP 4.2+,MPFR 2.3.1+and MPC 0.8.0+说明要安装gcc 需要 GMP、MPFR、MPC 这三个库,于是又从网上下了三个库的压缩包。由于 MPFR 依赖 GMP,而 MPC 依赖 GMP 和 MPFR,所以要先安装GMP,其次 MPFR,最后才是MPC。先开始安装GMP,解压 GMP 的压缩包名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -#tar-jxvf gmp-4.3.2.tar.bz2 在该目录的同级目录下建立一个临时的编译目录,这里命名为gmp-build。然后开始配置安装选项,进入gmp-build 目录输入以下命令进行配置:#./gmp-4.3.2/configure-prefix=/usr/local/gmp-4.3.2 这时在 gmp 的编译目录下就会生成一个makefile 文件,现在开始编译安装。#make 完成之后可以make check 检查一下。#make check#sudo make install 这样就安装好了gmp.mpfr 和 mpc 的安装方法与此类似。不过要注意配置的时候要把依赖关系选项加进去,具体后面两个库配置命令如下:#./mpfr-2.4.2/configure-prefix=/usr/local/mpfr-2.4.2-with-gmp=/usr/local/gmp-4.3.2#./mpc-0.8.1/configure-prefix=/usr/local/mpc-0.8.1-with-gmp=/usr/local/gmp-4.3.2-with-mpfr=/usr/local/mpfr-2.4.2 安装好这三个库之后,就可以正式开始安装gcc 了。(3)配置安装 gcc-4.5.0 与此前一样,先建一个编译gcc 的临时目录gcc-build,进入该目录后配置安装选项:#./gcc-4.5.0/configure-prefix=/usr/local/gcc-4.5.0-enable-threads=posix-disable-checking-disable-multilib-enable-languages=c,c+-with-gmp=/usr/local/gmp-4.3.2-with-mpfr=/usr/local/mpfr-2.4.2-with-mpc=/usr/local/mpc-0.8.1 gcc 的配置选项有很多,具体可以参考gcc 源文件目录下的安装说明。这里只安装了c和 c+的编译器。然后开始make 编译。本来以为就可以大功告成了,结果在编译途中又出现了错误:“checking for suffix of object files.configure:error:cannot compute suffix of object files:cannot compile See config.log for more details.(4)添加环境变量需要添加环境变量LD_LIBRARY_PATH以指出前面三个库的位置,键入以下命令:#export LD_LIBRARY_PA TH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib/:/usr/local/gmp-4.3.2/lib/:/usr/local/mpfr-2.4.2/lib/名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -然后重新make 编译,终于编译完成。还有测试这一步#make check 然后开始安装#make install 至此 gcc 就全部安装完成了。(5)创建软链接不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gcc 和 g+命令分别建立了一个软链接。进入/usr/bin 目录后,键入如下命令建立软链接。#sudo ln-s/usr/local/gcc-4.5.0/bin/gcc gcc45#sudo ln-s/usr/local/gcc-4.5.0/bin/g+g+45(6)配置新软件的环境变量这样我使用新版本gcc 的时候就可以用gcc45 和 g+45 命令,同时也可使用原来的gcc编译程序。当然这里也可以直接将/usr/bin 目录下 gcc,g+命令重新链接到新版本的gcc 可执行文件。在正式使用之前还有最后一个工作要做,就是将前面安装的三个库的路径加进环境变量 LD_LIBRARY_PA TH 中,不然在编译程序的时候会出错。由于我不想每次编译程序都生成环境变量,所以需要编辑/etc 目录下的bash.bashrc文件配置shell 环境。在这个文件中添加以下语句:LD_LIBRARY_PA TH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.5.0/lib export LD_LIBRARY_PATH 保存重启系统后,就可以使用新装的gcc 了,然后用#gcc-v 查看版本,结果是gcc 版本4.1.2 20080704(Red Hat 4.1.2-44)#gcc45-v 查看版本,gcc 版本4.5.0(GCC)g+查看同上,gcc4.5.0 安装成功(7)再次创建压缩内核镜像#make bzImage 没有再发生错误,创建内核镜像成功6、编译模块名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -#make modules 7、安装模块#make modules_install 8、安装内核#make install 9、修改/boot/grub/grub.conf 将新内核改为默认启动项default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server(2.6.29.4)root(hd0,0)kernel/vmlinuz-2.6.29.4 ro root=/dev/V olGroup00/LogV ol00 rhgb quiet initrd/initrd-2.6.29.4.img title Red Hat Enterprise Linux Server(2.6.18-128.el5)/*设置内核默认启动项,为0 时是第一个内核,我的新内核是第一个,故为0*/10、重新启动机器,查看当前内核版本#umname-a Linux localhost.localdomain 2.6.29.4#1 SMP Thu May 20 15:16:41 CST 2010 i686 athlon i386 GNU/Linux-至此新的内核编译成功。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -