4.5.3 全过程以及遇到的问题和解决办法总结(2)

 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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23003.html