升级后的gcc编译失败 - 找不到共享文件对象(libmpc.so.2)

时间:2015-09-18 11:27:33

标签: c gcc ubuntu-14.04

从Ubuntu 12.04升级后 - > 14.04,gcc编译失败。

使用的编译器和标志:

  

gcc -c -MMD -MP main.c -o main.o -std = gnu99 -lpthread -fstrict-overflow -Werror -Wall -Wshadow -Wstrict-overflow = 5 -pedantic -O2 -lm -lpthread -lrt

返回的错误是:

  

/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录< / p>

我查看了这个位置,libmpc.so.2无处可寻。

我试图寻找这个包,我已经检查了stackoverflow和其他论坛上的所有帖子,但没有真正适用的解决方案。

我尝试重新安装 gcc libmpc-dev ,但它们没有问题。如果我尝试重新安装libmpc3它没有显式失败,但返回的最终消息是:

  

/sbin/ldconfig.real:/usr/local/lib64/libstdc++.so.6.0.19-gdb.py不是ELF文件 - 它在开头就有错误的魔术字节。

我读到问题可能是LD_LIBRARY_PATH环境变量(echo什么都没有返回),所以我在 /etc/ld.so.conf 中设置它,其中包含以下行:

include /etc/ld.so.conf.d/*.conf

我将路径/usr/local/lib添加到conf文件的底部,但我认为这没用,因为我甚至找不到libmpc.so.2,更不用说将gcc指向正确的位置了。但是,在尝试通过运行ldconfig更新动态加载程序缓存后,将返回以下行:

  

/sbin/ldconfig.real:/usr/local/lib64/libstdc++.so.6.0.19-gdb.py不是ELF文件 - 它在开头就有错误的魔术字节。

所以,有几个问题:

  1. 预升级一切正常。什么升级 破?
  2. 如何获取文件 libmpc.so.2 ?您需要获得哪个软件包以及如何找到安装位置?
  3. 这是关于魔术字节的内容,我该怎么办呢?在线资源表明这是一个错误?
  4. 感谢您花时间阅读本文,我是一名Linux新手,所以我感谢所有帮助。

    编辑:愚蠢地我忘了添加gcc的版本。 gcc --version 返回

      

    gcc(GCC)4.8.3

1 个答案:

答案 0 :(得分:2)

GCC文件的路径为/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/cc1,表明它位于/usr/local,系统包永远不会安装在/usr/local

这意味着有人在旧的Ubuntu 12.04系统中手动安装了GCC 4.8.3。您现在已经更新了系统,因此无法使用该GCC,因为它是为不同版本的操作系统构建的。它与libmpc.so.2链接,但该文件在Ubuntu 14.04中不存在,无法使用apt安装。

从Ubuntu存储库安装GCC并停止使用/usr/local中的GCC,14.04的最新GCC是4.8.4,无论如何都是新的:

http://packages.ubuntu.com/trusty-updates/gcc-4.8

那将安装一个使用14.04中存在的libmpc版本的工作编译器(libmpc.so.3

您应该删除/usr/local/中的整个GCC安装,或者至少将其从PATH中删除,以便它不被使用。

在shell提示符下键入type -a gcc将显示PATH中的所有gcc个可执行文件,我希望这些文件可以显示:

/usr/local/bin/gcc
/usr/bin/gcc

第一个是您正在使用的损坏版本,但与升级后的系统不兼容。第二个是由 gcc 包安装的,是你应该使用的那个。