4. 我在/usr/bin 目录下关于gcc、g++ 的文件主要有以下四个:
gcc g++
gcc45 g++45
上面一行的是原来的高版本的4.6.1的gcc版本,下面一行是新安装的低版本的4.5.3的gcc版本的软链接(我理解为就是低版本的gcc本身),现在系统默认执行gcc还是4.6.1的gcc,执行gcc45就是4.5的gcc,我在编译其他源码的时候,由于是configure配置的,需要修改默认的系统gcc版本,所以我把这个目录下的原来的gcc 改名为gcc.bak(mv /usr/bin/gcc /usr/bin/gcc.bak) ,把gcc45改名gcc(mv /usr/bin/gcc45 /usr/bin/gcc),这样我的默认的gcc环境就是低版本4.5.3的了,g++(mv /usr/bin/g++ /usr/bin/g++.bak ;mv /usr/bin/g++45 /usr/bin/g++)也一样操作。
当需要改回默认设置是高版本时候,执行反操作,把gcc改成gcc45,把 gcc.bak 改成gcc,就是高版本的4.6.1为默认了,g++的改名也一样操作。
5.安装完gcc并重启后,发现系统很慢了,而且firefox浏览器、文件系统等都打不开了,只有终端能打开了,很郁闷啊,问题还没完全解决呢,又出现了一个问题啊,于是又费了好大的劲才弄好。
首先,在终端输入命令 firefox,然后出现错误提示:Couldn‘t load XPCOM。这个问题很奇怪,其他什么都没有,我在网上查了查,没有类似的问题。我当时用的是firefox 7.0版本的,后来就升级了一下,用 yum update firefox,更新完毕后,又用命令 firefox试了试,这时出现问题如下:
XPCOMGlueLoad error for file /usr/lib/xulrunner-2/libxpcom.so: /usr/local/gcc-4.5.3/lib/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found (required by /usr/lib/xulrunner-2/libxul.so)
Couldn't load XPCOM.
后来,又在网上查阅资料,才弄明白,也费了一番周折的。
执行命令:strings /usr/local/gcc-4.5.3/lib/libstdc ++.so.6 | grep GLIBC 显示如下:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBC_2.0
GLIBC_2.3
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
又执行 ls -l /usr/local/gcc-4.5.3/lib/libstdc ++.so.6 显示如下:
lrwxrexrwx. 1 root root 19 12月 19 19:00 /usr/local/gcc-4.5.3/lib/libstdc++.so.6 -> libstdc++.so.6.0.14
意思是低版本的gcc-4.5.3的libstdc++.so.6 与libstdc++.so.6.0.14建立了软连接。
重复上面的两行命令,只不过是用/usr/lib/libstdc++.so.6替换了 /usr/local/gcc-4.5.3/lib/libstdc++.so.6,可以查到这里包含‘GLIBCXX_3.4.15’,且软连接是:/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.16,显然是指原来高版本gcc-4.6.1的libstdc++.so.6 与libstdc++.so.6.0.16建立了软连接。而现在用了低版本的gcc-4.5.3,却缺少了‘GLIBCXX_3.4.15’,那么把
低版本的gcc-4.5.3的libstdc++.so.6 与libstdc++.so.6.0.16建立软连接,应该就可以解决这个问题了吧。
首先复制:cp /usr/lib/libstdc++.so.6.0.16 /usr/local/gcc-4.5.3/lib/
然后建立软连接:ln -s /usr/local/gcc-4.5.3/lib/libstdc++.so.6.0.16 /usr/local/gcc-4.5.3/lib/libstdc++.so.6