LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 634|回复: 7

关于编译器的问题

[复制链接]
发表于 2006-8-8 11:54:09 | 显示全部楼层 |阅读模式
如果我想编译gcc-2.95.3的话,我现在的系统自带的编译器是gcc-4.0.3,编译过程中出现了很多错误,我又想用gcc-3.4.6来编译,然后我就apt-get install了一个,请问大家如果正常进入gcc-2.95.3这个文件夹后,执行./configure的话,是在做什么?如何利用gcc-3.4来编译,谢谢的能提供给在下一个比较详细的解答!万分感谢!
发表于 2006-8-8 12:38:06 | 显示全部楼层
想自己编译 gcc 估计很难,因为你要搞清楚 gcc-2.95.3 维护者当时是用哪个 gcc 版本编译的,如果你现在用来编译的 gcc 和他当时用的不同,十有八九会出错。所以一般 gcc 之类最好直接用官方编好,这些都是系统很底层的东西,最好不要去动它。
而且  gcc-2.95.3 年代都很久远了,你的机器系统估计很新,编这个估计是找不到这么老的 gcc 编译来编译了,找到了不一定能装得上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-8 12:45:49 | 显示全部楼层
恩。。那也希望楼上的大哥能给在下解释一下如何用别的版本的gcc编译器(除了系统自带的)来编译程序,谢谢!
回复 支持 反对

使用道具 举报

发表于 2006-8-8 12:52:32 | 显示全部楼层
Post by quanliking
想自己编译 gcc 估计很难
自己编译 gcc 其实也不算很难,做 LFS 的时候编译 gcc 是必经之路,编译 gcc 最佳方法是參考 LFS 或 BLFS 手冊
Post by quanliking
因为你要搞清楚 gcc-2.95.3 维护者当时是用哪个 gcc 版本编译的,如果你现在用来编译的 gcc 和他当时用的不同,十有八九会出错。所以一般 gcc 之类最好直接用官方编好,这些都是系统很底层的东西,最好不要去动它。
這個問題可以由 make bootstrap 來解決
Post by quanliking
而且 gcc-2.95.3 年代都很久远了,你的机器系统估计很新,编这个估计是找不到这么老的 gcc 编译来编译了,找到了不一定能装得上。
老版 gcc 的源碼仍然可以下載的

有點不解,為何非要用 2.95.3 這些古懂?
回复 支持 反对

使用道具 举报

发表于 2006-8-8 13:12:59 | 显示全部楼层
我的意思是用新的 gcc 版本来编译很老版本的 gcc 估计很难用,因为 gcc 本身也在不­的升级,使之贴 近 C 语言规范,而 C 语言规范本身也在不停的变化。

老的 gcc 源代码是能够找到,但用新的 gcc 编译器来编译,我觉得能成功,很不可思议,而且假设成功,在新的系统上依赖关系能解决么?

我只在 gentoo 里编译过 gcc,但那是新版的 gcc。只要找对用来编译的 gcc ,问题不会很大。
至于 lfs,我没编过,我想道理和 gentoo 相差不大吧。

唯一能做的就是找个很老版本的 debian 或其它发型版,当然里面要包含 gcc 2.95.3。

你的代码是否是一些老代码,故需要旧版的 gcc。

废话一句,在 konqueror 里用 fictx,尽然出现乱码,看了 konqueror 问题不少。
回复 支持 反对

使用道具 举报

发表于 2006-8-8 14:43:01 | 显示全部楼层
Post by quanliking
我的意思是用新的 gcc 版本来编译很老版本的 gcc 估计很难用,因为 gcc 本身也在不­的升级,使之贴 近 C 语言规范,而 C 语言规范本身也在不停的变化。

老的 gcc 源代码是能够找到,但用新的 gcc 编译器来编译,我觉得能成功,很不可思议,而且假设成功,在新的系统上依赖关系能解决么?
这很有道理,新版 gcc 未必能成功编译旧的 gcc,一方面是 C 语言规范,另一方面是对 NTPL 的支持

我曾经在 Arch 下用 gcc-4.0.x 成功编译过 gcc-3.3.6,(跳过 gcc-3.4.x),另外稍旧的 LFS 版本如 LFS-5.1.1 曾要求用 gcc-3.2.x 去编译 gcc-2.95.3,这也可以放心,但是用 3.3/4.x 直接编译 2.95.3 就未试过了,隔代编译虽然不一定行,不过可以肯定的是递归往下编译是可行的,因为每一版的 BLFS 手册都有教程如何去编译上一版的 gcc
Post by quanliking
我只在 gentoo 里编译过 gcc,但那是新版的 gcc。只要找对用来编译的 gcc ,问题不会很大。
至于 lfs,我没编过,我想道理和 gentoo 相差不大吧。
我很久没用 Gentoo,也没看过它 gcc 的 ebuild,不太清楚 Gentoo 在 emerge gcc 的时候有没有 make bootstrap,但 LFS 编译的 gcc 的概念跟 Gentoo 有点不同,做 LFS 的时候要分几个阶段重复编译 gcc (正确一点是 toolchain),从而使目标系统完全独立於宿主系统,确保不受宿主系统任何影响,而 Gentoo 在编译 gcc 的时候,并无宿主系统及目标系统之分,是在同一系统下更新 gcc 的
Post by quanliking
唯一能做的就是找个很老版本的 debian 或其它发型版,当然里面要包含 gcc 2.95.3。
还有一法,可以用早期的 LFS LiveCD 或者较早的 Knoppix 来进行编译

要麽就是先装个 gcc-3.2.x 去编译 gcc-2.95.3 也行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-8 16:49:43 | 显示全部楼层
楼上的大哥的最后一句话,正好接近我想要的答案,我装系统时候,apt-get install build-essential后,gcc版本是4.0.3的,我现在又apt-get install了一个3.4.6的,我想知道我现在如何通过gcc-3.4.6来编译gcc-2.95.3,谢谢指教!:)
回复 支持 反对

使用道具 举报

发表于 2006-8-8 17:39:49 | 显示全部楼层
说了嘛,最好是參考 LFS 或 BLFS 手册,也可以看看这里

http://www.linuxsir.cn/bbs/showthread.php?t=231824

刚看了一下 packages.debian.org,其实 gcc-2.95 在 stable、testing 及 unstable 均有提供,你 apt-get install gcc-2.95 不是更简单?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表