首先将gcc-1.40传到MINIX上。
使用上述命令在Linux上将gcc-1.40.tar.Z分割为大小不超过1400K的文件:
gcctz.aa1400k
gcctz.ab1400k
gcctz.ac 90k
复制到dos盘上,并在MINIX-386上使用dosread命令读取:
dosread b: gcctz.aa > gcc.tar.Z.aa
dosread b: gcctz.ab > gcc.tar.Z.ab
dosread b: gcctz.ac > gcc.tar.Z.ac
然后合并成一个大文件:
cat gcc.tar.Z.* > gcc.tar.Z
compress16 –d gcc.tar.Z
tar xf gcc.tar
最后得到目录:
/usr/john/gcc140/gcc-1.40/
使用i386 sysV gas配置文件。
RTFM – Read the F**king Message (查看编译出错信息)。
使用i386 sysV gas配置文件。
参考awb提供的gcc-1.37.1的Makefile文件对gcc-1.40的Makefile进行修改,基本上没大问题。
运行config.gcc
config.gcc i386-sysv-gas
运行make碰到的问题1:
cc的参数-g需要/usr/local/lib/libg.a,RMS建议创建一个该名称空的库文件。使用命令:
ar rc /usr/local/lib/libg.a
不能生成空文件(nothing!)
于是随便写了一个子程序zjzdummy.c,然后执行:
cc -c -o zjzdummy.o zjzdummy.c
ar rc /usr/local/lib/libg.a zjzdummy.o
生成了这个库文件,解决了这个问题。
运行make时碰到的问题2:
在编译c-parse.tar.c程序时,出现错误:
“fp stack overflow”(浮点运算堆栈溢出)。
该问题是由于在安装gcc 1.37.1执行文件时,其要求对/usr/src/kernel/klib386.x进行补丁操作,虽然执行了这一步,但是kernel编译时最终是要使用klib.x的。而在补丁操作以后没有将klib386.x复制成klib.x(或者使用命令config 386),因此补丁没有起作用。
将klib386.x复制成klib.x并重新编译内核,即可解决该问题。
运行make时问题3:
“arg-list too long make stop.”,继续重新执行make即可。
运行make问题4:
在创建float.h文件时,需要先编译出hard-params文件。失败,因此float.h不成功。
最后使用1.37.1的库gnulib和float.h文件。
ranlib – 产生归档文件(archive)内容的一个索引,并将该索引保存在该archive中。该索引列出了archive中可重定位目标文件(元素)定义的每一个符号。该索引用于加速连接archive中子程序的速度。该命令与命令ar -s完全等同。
可以使用命令nm -s命令列出该索引。
--
原文链接: http://www.ieee.org.cn/dispbbs.asp?boardID=63&ID=25072
|