| 
		    
                     首先将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 
		    
                      
		      
		      
		   |