3

我的系统管理员最近在 /lusr/opt/gcc-4.4.3 中安装了新版本的 GCC。我对其进行了如下测试:

mike@canon:~$ cat test.c
int main(){
  return 0;
}
mike@canon:~$ gcc test.c
/lusr/opt/gcc-4.4.3/libexec/gcc/i686-pc-linux-gnu/4.4.3/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory

在通知我的系统管理员后,他说要添加/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib到我的LD_LIBRARY_PATH. 执行此操作后,我收到以下错误:

mike@canon:~$ gcc test.c
cc1: error: unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"

首先,我的系统管理员不完全确定这是最好的解决方法(尽管他确实说这对他有用......),那么有更好的解决方案吗?

其次,为什么我会收到链接器错误cc,我该如何解决?

一些可能有用的信息:

mike@canon:~$ env | grep mpfr
OLDPWD=/lusr/opt/mpfr-2.4.2/lib
LD_LIBRARY_PATH=/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib:

mike@canon:~$ echo $LDFLAGS

(the above is a blank line)
4

2 回答 2

1

我建议您的系统管理员需要将 GMP 和 MPFR 库从构建机器安装到您机器上的相同位置。(还有您可能还需要的 MPC 库。)或者,您的系统管理员需要安装 GCC 的重建 - 最好是 4.5.2 版,因为它是(AFAIK)当前版本 - 正确设置 GMP 和 MPFR 库的位置安装在您的机器上。

您不需要设置 LD_LIBRARY_PATH 来使用 GCC。如果您需要这样做,则表明它不是为运行它的机器构建的。缺少关键库。

要进一步调试,您可能需要使用:

gcc -v test.c

这将向您显示执行的命令行。没有要求将-L选项(影响程序链接方式)传递给阶段 1 编译器。

于 2011-01-23T20:19:54.993 回答
0

这看起来像是 gcc 解析的一些错误参数(它不应该抱怨-L foo)。

你可以尝试设置

LD_LIBRARY_PATH=\ /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib

以便在该 mpfr 库路径之前有一个前导空格?

于 2010-02-12T15:16:01.013 回答