gcc-2.95.3编译-同时编译linux2.6.30版本内核

时间:2021-03-17 15:29:02

编译准备:


因为linux2.6.3源码目录下的reademe文件里明确告知需要使用gcc-2.95.3来进行编译,所以就不要安装最新gcc编译器了


因为这是编译内核所以为了方便,我建议大家切换到root下

执行 sudo -s 


-----------下载并编译gcc-2.95.3版本的编译器---------------


1.   下载gcc-2.95.3, 下载地址  http://ftp.gnu.org/gnu/gcc/gcc2.95.3 , 这个目录下我并没有发现patch,所以我并没有给这个版本编译器源码打patch

2.   解压-解压后的目录为 gcc-2.95.3

3.   cd gcc-2.95.3

4.   mkdir build-gcc

5.   cd build-gcc

6.   ../configure --prefix=/opt/gcc-2.95.3  --enable-shared  --enable-languages=c

7.   make

8.   make install

9.   将/opt/gcc-2.95.3/bin 目录加入到环境变量里就可以用了

10. gcc  -v 查看版本


----------linux2.6.30内核编译---------------------------------


1.  下载linux2.6.3 内核源码并解压,不要改文件

2.   cd linux2.6.3

3.  下载补丁patch2.6.3.bz2 放到与linux2.6.30同级目录下

4.  下载linux-2.6-seg-5.patch 放到与linux2.6.30同级目录下,

      你也可以不放在这里, 下面的两个命令你自己指定好路径就行了,

       下载地址  https://www.kernel.org/pub/linux/devel/binutils/  这个地址比较稳定

5.   执行 bzcat ../patch2.6.3.bz2 | patch -p1  开始打补丁

6.   执行patch -p1 <../linux2.6-seg-5.patch 


如果不打这两个补丁, as编译会出现问题 大概如下,很明显这是编译器不支持这种语法了:

{standard input}: Assembler message suffix or operands invalid for mov



好了,开始编译内核,编译内核需要依赖的一些库基本上就是

libncurses5-dev libncurses-dev fakeroot initramfs-tools module-init-tools 


apt-get install 自己下载安装

我建议,用本机的配置来初始化.config 文件,因为这样make menuconfig

就不用配置里

在内核源码目录下 执行 cp /boot/config-`uname -r` .config

然后cat .config确认这个文件被我们拷贝过来了


然后执行make menuconfig,进入到menu后往下找,找到Load开头的,进去

你懂的,这个就是把我们刚才拷贝过来的 .config 文件让menuconfig识别,然后退出保存



开始make, 不出意外,一切顺利



Tips: 在拿到源码的时候一定要看README文件,因为一些环境相关的东西,

这个文件可能会告诉你,例如,编译器版本等信息,还有一些其他的依赖