总体目标:由于fedora10 linux发行版中自带的linux2.6.xx内核源码规模太庞大了,对于想通读内核源码的爱好者来说太困难了,因此选择了linux2.4.20内核来进行测试(最终是希望能够实现linux1.0内核的源码完全编译和测试)。
实施步骤:根据redhat9发行版的gcc和binutils版本,在fedora10中构建相同的编译环境并进行linux2.4.20内核的编译和测试,制作2.4.20内核的软盘启动盘,然后通过虚拟机启动,能够看到linux2.4.20内核启动成功。后续低内核版本也按照低gcc版本和对应的binutils版本来构建编译环境进行内核的编译测试。
编译linux2.4.20内核的时候,我的内核源码时放在win10的主机上,通过wmware10文件共享功能fedora10虚拟机共享内核源代码,然后利用fedora10中安装的编译环境来编译内核,由于ln命令不支持跨文件系统建立软硬连接,所以修改makefile文件,注释了箭头指示的两个地方,然后直接在内核源码include目录中按照所需要编译的目标系统,拷贝一份,将文件夹名字修改为asm。
内核编译或者make dep操作出现错误:“/mnt/hgfs/linux-2.4.20/include/linux/kernel.h:10:20: stdarg.h: 没有那个文件或目录”,但系统上能够查询到此文件
我的解决方法:因为我用的是gcc-3.2.2编译器,源程序在/home目录,安装在/opt/目录,因此我直接将/home/gcc-build/gcc/include/stdarg.h文件拷贝到内核源码目录linux-2.4.20/include中,能够顺利编译和通过make dep。
Linux2.4.20内核编译过程中出现汇编错误如下解决:后面在fedora10中将安装的as-2.13.2.1拷贝到/usr/bin目录中更名为as,发行版自带的as先备份为as_bak,后续准备创建一个封闭的gcc3.2.2+as-2.13.2.1编译环境,不影响发行版的编译环境。
出现这个汇编错误,是因为as的版本跟gcc的版本不配套导致的,redhat9 linux的发行版里面gcc和as版本如下,编译没有问题:gcc3.2.2+as 2.13.90+ld 2.13.90。
目前我使