Linux替换gcc,多版gcc下替换系统原版gcc要注意的事项

多版gcc下替换系统原版gcc要注意的事项

发布时间:2007-08-12 21:06:33来源:红联作者:JinXian

众所周知,gcc 是可以多版同存的,因此很多时候为了测试新版 gcc 与及避免对原来系统影响太多的前题下,我会将新的 gcc 装到 /opt 里去(configure 的时候用 --prefix=/opt/gcc-xxx),然後在 /usr/bin 下使用 symlink 方式来切换新旧版,尽管多数情况下都没有换回旧版去。。。

情况是这样的,真正建构系统的 toolchain 是 gcc-4.0.3 (--prefix=/usr,在 /usr/bin 里的),其後 gcc 经历几次升级,於是 /opt 里装了 gcc-4.1.2,gcc-4.2.0 及最新的 gcc-4.2.1

由於 gcc-4.2.1 是 gcc-4.2.x 的 bugfix release,而 gcc-4.2 又比前几代性能优越,加上 gcc-4.2 早已用上多时,因此觉得系统里的旧版 gcc 实在多余,於是便把心一横,决定干掉所有旧版,只留新版。由於用了 paco,谨慎起见,还是用 paco 先打了几个 gcc-xxx-paco.tar.gz 的包才动手

干掉後,只需在 /usr/bin 里建几个对应 /opt/gcc-4.2.1/bin 里的 symlink,包括:

gcc

g++

c++

cpp

gcov

gccbug

i686-linux-pc-xxxx

还有 /lib/cpp 等便行

好了,似乎一切无误,编译程序都正常,可是问题出现了,一些以往能跑的程序如 xpdf、kpdf、kwrite 等等相继服错,说找不到什麽 libgcc_s.so.1,检查一下 /opt/gcc-4.2.1/lib 里是有的,再仔细校对一下,终於知道问题了。原来是干掉原系统里的 gcc-4.0.3 的时候,系统把 /lib/libgcc_s.so.1 也去掉了,形成程序运行时找不到该库而服错,这好办,建一个 symlink 到 /opt/gcc-4.2.1/lib 不就行了?

哈哈,果然揍效,一切回复正常。

这里告诉我们两件事:

1. 在多版 gcc 的情况下,即使程序由新版 gcc 编译出来,它有可能仍在默认的库路径找出旧版 gcc 的库来用,这方面只要稍作修正便行

2. 在非覆盖式安装新版 gcc 的情况下,要注意执行文件的路径及相关的库

后记:

我不是专家,纯绪基於 trial-and-error 得来经验,如有错漏,敬请指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值