从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文件 - 它在开头就有错误的魔术字节。
所以,有几个问题:
感谢您花时间阅读本文,我是一名Linux新手,所以我感谢所有帮助。
编辑:愚蠢地我忘了添加gcc的版本。 gcc --version 返回
gcc(GCC)4.8.3
答案 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 包安装的,是你应该使用的那个。