以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 操作系统原理 』  (http://bbs.xml.org.cn/list.asp?boardid=63)
----  用MINIX-386 gcc1.37.1编译gcc-1.40  (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=25072)


--  作者:enorm
--  发布时间:12/7/2005 12:09:00 PM

--  用MINIX-386 gcc1.37.1编译gcc-1.40
首先将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命令列出该索引。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms