beyondone 发表于 2005-11-5 19:42:56

关于gcc,libstdc++

小弟刚接触linux,一些问题甚是不了,还望各位师兄长多指点 :o

依GNU的解释,GCC是一些常用语言的complier collection + 它们的一些lib.
小弟下了个GCC4.0.2 tar包,进去看,除了gcc文件夹,还有许多诸如libada,libcpp,......的文件夹,这些应该就是各种语言它们附带的lib吧?

既然如此,那么为什么还会有glibc呢?我用rpm查了一下,还有个libgcc,它又
是什么呢?

libstdc++应该是c++的标准lib吧?它与libstdc++.so.*又是什么关系呢?
libstdc++.so.*也是c++的lib吗?GCC4.0.2包里有libstdc++-v3,我机子上
装的是libstdc++-3.3.2-1,如果它们同为c++的lib,那它们的version号是不是
有什么对应关系?比如libstdc++-3.3.5等同于libstdc++.so.6?

我想把旧的GCC卸了,装GCC4.0.2,在论坛搜到几篇相关文章,但讲的都是新版本
GCC与旧版本同存共用,如果卸了GCC,我又怎么./configure,make install呢?

mandrakechina 发表于 2005-11-5 20:02:03

libgcc是gcc自己需要的库。比如kdelibs会需要libkdecore4,这是一样的道理。

libstdc++6是由gcc 3.4/4.0生成的,而gcc3.3生成的是libstdc++5。l

一般认为,没有特别的需要,不应该对系统自带的gcc进行大规模的升级或降级。

另外,configure和make都不需要gcc,除非configure和Makefile里指定了gcc。

beyondone 发表于 2005-11-5 22:45:07

谢谢楼上的师长! :o

linux的母语是c,GCC应该也是c语言编的吧.我下的GCC源代码包,安装的时候难道不要用c编译器
器吗?

如果这样的话,我就完全可以先把旧版的卸调,然后再装4.0.2吧?
一般认为,没有特别的需要,不应该对系统自带的gcc进行大规模的升级或降级。

我装一个软件的时候说libstdc++.so.6 needed,而我查了一下我机子上的是libstdc++.so.5,所
以我想update下GCC,

libstdc++6是由gcc 3.4/4.0生成的,而gcc3.3生成的是libstdc++5。l

这样的话,那么装了GCC4.0.2后应该就会自动生成libstdc++.so.6了吧?

或者我可以不update GCC,而直接下载latest的lib覆盖旧的也行,类似的,所有lib是不是都可
以这样update,对程序没有影响吗?

先谢谢各位师长了!

mandrakechina 发表于 2005-11-5 23:05:55

你可以用旧版的gcc编译新版的gcc源文件啊,然后再把编译出来的gcc 4.0安装上去,你的系统就有两个不同版本的gcc了。而系统默认使用的gcc版本由环境变量GCC_VERSION(具体名字记不得了)来控制。

如果你想装一个软件,它需要libstdc++6,那么就一定有该软件的相应二进制版本,需要libstdc++5的。当然,你也可以下载该软件的源代码,自己编译。编译一个应用软件,要比交叉编译gcc省事,这是显然的。

libstdc++6必须和libgcc同时安装,一般认为不会对系统造成影响。但不同发行版不同版本的基础库不可混装,也就是说你不能在Red Hat9上安装FC4中的libstdc++6。

beyondone 发表于 2005-11-5 23:41:25

我决定还是再编译安装上GCC4.0.2,挑战下有难度的case,也借机锻炼锻炼,遇上了难题再来求教各位师长! :-)

多谢mandrakechina师长的指点! :-)

fangtianyu 发表于 2005-11-5 23:59:59

那位大大有libstdc++.so.5,发个gcc吧,我找不到啊,我用fedora core4。谢谢!

月下刀客 发表于 2005-11-6 10:20:51

http://rpm.pbone.net/ 这里搜一下就有了。
页: [1]
查看完整版本: 关于gcc,libstdc++