GCC 4.5.0 & GMP 5.0.1 的安装问题一例

来源:互联网 发布:天猫美工培训 编辑:程序博客网 时间:2024/06/10 21:03

自己的机器上Ub9.10自带gcc4.4.1版本,

前几天GCC 4.5.0 Release,想尝鲜一下,顺带用我们实验室的工具测试测试看看可能找出来错误。

下载解压之后./configure,报错,需要gmp 4.3.2 以上的版本。到gmp官网下载5.0.1版本下载安装。

安装完毕之后重新./configure,报错,找不到可用的cc编译器。

这个就把我搞糊涂了,查看config.log,发现cc1报错:

/usr/lib/gcc/i486-linux-gnu/4.4.1/cc1:   /

error while loading shared libraries: libgmp.so.10: /

cannot open shared object file: No such file or directory

使用 find /usr -name 'libgmp.so.*'找到缺失的文件确实在/usr/local/lib之中,但是cc1找不到,这就奇怪了。

想着可能是gmp新版本跟gcc旧版本不兼容的问题?搜索之后找到了这个链接:

http://forum.osdev.org/viewtopic.php?f=1&p=172532

里面提到了library的路径问题,顺着提示 cat /etc/ld.so.conf ,发现 /usr/loal/lib 已经包含在了路径之中。

又使用 ldd 命令查看cc1:

$ldd /usr/lib/gcc/i486-linux-gnu/4.4/cc1

linux-gate.so.1 =>  (0x003b6000)

libmpfr.so.1 => /usr/local/lib/libmpfr.so.1 (0x00d27000)

libgmp.so.3 => /usr/local/lib/libgmp.so.3 (0x00ee6000)

libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00110000)

libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00981000)

/lib/ld-linux.so.2 (0x00f71000)

libgmp.so.10 => not found

还是不知道为什么会同一个目录下找不到,于是 man ldd , 在 see also 中看到了 ldconfig , man 之,发现 lib 的信息是被 cache 的。
参照 man ldconfig 的example运行:
sudo ldconfig -v
重建cache,之后在ldd cc1一下得到
$ldd /usr/lib/gcc/i486-linux-gnu/4.4/cc1
linux-gate.so.1 =>  (0x00975000)
libmpfr.so.1 => /usr/local/lib/libmpfr.so.1 (0x00ba2000)
libgmp.so.3 => /usr/local/lib/libgmp.so.3 (0x00b2b000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x003a4000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00655000)
libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x00878000)
/lib/ld-linux.so.2 (0x00d60000)
重新./configure,搞定。

 

原创粉丝点击