编译准备:
因为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文件,因为一些环境相关的东西,
这个文件可能会告诉你,例如,编译器版本等信息,还有一些其他的依赖