C++ 在生成gcc4.8.1时无法打开libmpc.so.3

C++ 在生成gcc4.8.1时无法打开libmpc.so.3,c++,gcc,C++,Gcc,我想在ubuntu 10.04上安装gcc4.8.1 以下是我的安装步骤: 安装libgmp、libmpfr和libmpc 切换到gcc4.8.1源代码目录后,运行“/configure--prefix=/usr/bin/gcc4.8.1--with gmp=/opt/pkg/gmp5.1.2--with mpfr=/opt/pkg/mpfr3.1.2--with mpc=/opt/pkg/mpc1.0.1” 制造 导出LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:

我想在ubuntu 10.04上安装gcc4.8.1

以下是我的安装步骤:

  • 安装libgmp、libmpfr和libmpc

  • 切换到gcc4.8.1源代码目录后,运行“/configure--prefix=/usr/bin/gcc4.8.1--with gmp=/opt/pkg/gmp5.1.2--with mpfr=/opt/pkg/mpfr3.1.2--with mpc=/opt/pkg/mpc1.0.1”

  • 制造

  • 导出LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib

  • sudomakeinstall

  • 在最后一步中,我遇到了以下错误:

    /usr/local/sbin/gcc-4.8.1/host-i686-pc-linux-gnu/gcc/cc1: error while loading shared   libraries: libmpc.so.3: cannot open shared object file: No such file or directory
    make[5]: *** [install-exec-hook] Error 1
    make[5]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
    make[4]: *** [install-exec-am] Error 2
    make[4]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
    make[3]: *** [install-am] Error 2
    make[3]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
    make[2]: *** [install-recursive] Error 1
    make[2]: Leaving directory `/usr/local/sbin/gcc-4.8.1/i686-pc-linux-gnu/libjava'
    make[1]: *** [install-target-libjava] Error 2
    make[1]: Leaving directory `/usr/local/sbin/gcc-4.8.1'
    make: *** [install] Error 2
    

    我已经切换到libmpc库路径,并用ldd测试了libmpc.so.3。它已成功安装。为什么它说它不能打开共享对象libmpc.so.3?我怎样才能修好它

    您必须检查libmpc.so.3是否是成功创建的指向libmpc.so.3.0.0的符号链接。出现此错误的原因可能是您已手动安装此库和sym。链接可能丢失。你可以试试这个:

    sudo ln -s /opt/pkg/mpc1.0.1/lib/libmpc.so.3.0.0 /opt/pkg/mpc1.0.1/lib/libmpc.so.3
    

    ln
    的语法是
    ln-s
    。有关更多信息,请查看的手册页。

    根据您的建议,我已成功安装了gcc4.8.1。以下是我的步骤:

  • 从/opt/pkg中删除gmp、mpfr和mpc

  • 使用默认配置安装gmp、mpfr和mpc。这些软件包将安装在/usr/local/lib中

  • 导出LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

  • 输入gcc源目录,运行“/configure”

  • 制造

  • 添加符号链接:

    sudo ln-s/usr/local/lib/libgmp.so.10/usr/lib/libgmp.so.10

    sudo ln-s/usr/local/lib/libmpfr.so.4/usr/lib/libmpfr.so.4

    sudo ln-s/usr/local/lib/libmpc.so.3/usr/lib/libmpc.so.3

  • sudomakeinstall


  • 而不是你。谢谢你,特洛伊敌人。

    我认为这里的任何答案都不能解决这个问题。你的问题是最后两步

    export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
    sudo make install
    
    导出
    LD\u LIBRARY\u路径
    是正确的,但在最后一步中,当您使用
    sudo
    更改为root用户时,您会重置所有环境变量

    解决这个问题的一个方法是:

    sudo -s  # become root user
    export LD_LIBRARY_PATH=/opt/pkg/gmp5.1.2/lib:/opt/pkg/mpfr3.1.2/lib:/opt/pkg/mpc1.0.1/lib
    make install  # don't use sudo here
    

    如果任何人在使用自己手动构建的libgmp、libmpfr和libmpc版本而不是系统提供的版本时发现了这一点:

    export LD_LIBRARY_PATH=/opt/your-prefix-directory
    
    make
    本身所必需的,即即使在运行
    gcc
    /configure
    时也是如此

    --with-gmp=/opt/your-prefix-directory --with-mpc=/opt/your-prefix-directory --with-mpfr=/opt/your-prefix-directory
    

    你需要指定链接器应该去哪里寻找libgmp和朋友。

    真是一团糟!使用此配置,您将进入一个痛苦的世界。您希望如何维护系统级共享库以及安装在
    /opt
    中的定制库。我还注意到您正在
    /usr/local/sbin
    中构建,并已将gcc前缀设置为
    /usr/bin/gcc4.8.1
    。祝你好运你会需要的,谢谢。我发现在/opt中安装这些软件包真的是不明智的。@trojanfoe,有没有像你建议的那样好的来源来解释这些关键的东西?谢谢你的回复。但是我不能用“ln”命令解决这个问题。我已经按照你的建议检查了符号。符号链接已成功创建。
    export LD\u LIBRARY\u PATH=$LD\u LIBRARY\u PATH:/usr/local/lib
    这对我很有帮助,tks。我只写了
    export LD\u LIBRARY\u PATH=/usr/local/lib
    ,OP应该在这里接受他们自己的答案
    export-LD\u-LIBRARY\u-PATH=…
    也解决了我的问题,请参见下面的答案。