从Ubuntu12.04 -> 14.04升级后,gcc编译失败。
编译器和使用的标志:
gcc -c -MMD -MP main.c -o main.o -std=gnu99 -lpthread -f-std=gnu99-溢流-Werror -Wall -Wshadow -Wstrict溢流=5 -pedantic -O2 -lm -lpthread -lrt
返回的错误是:
加载共享库时出现/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/cc1:错误: libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录
我已经查过这个地方了,libmpc.so.2也找不到了。
我试图寻找这个包,我已经检查了所有我可以在堆栈溢出和其他论坛上的帖子,但没有真正适用的解决方案。
我试着重新安装gcc和libmpc,它们都没有问题。如果我尝试重新安装libmpc3,它不会显式失败,但返回的最后消息是:
/sbin/ldconfig.real: /usr/local/lib64 64/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 64/libstdc++.so.6.0.19-gdb.py不是ELF文件,它在开始时有错误的神奇字节。
所以,有几个问题:
谢谢你抽出时间阅读这篇文章,我是一个linux新手,所以我很感激我能得到的一切帮助。
编辑:愚蠢地,我忘了添加gcc的版本。gcc -版本返回
gcc (GCC) 4.8.3
发布于 2015-09-18 12:31:31
GCC文件的路径是/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/cc1,这表明它在/usr/local中,系统包从未安装在/usr/local中。
这意味着有人在原来的Ubuntu12.04系统中手工安装了GCC 4.8.3。您不能使用GCC,因为您已经更新了您的系统,因为它是为不同版本的操作系统构建的。它是针对libmpc.so.2链接的,但是Ubuntu14.04中没有该文件,无法使用apt进行安装。
从Ubuntu存储库中安装GCC,停止使用/usr/local中的存储库,最新的GCC为14.04是4.8.4,这是更新的:
http://packages.ubuntu.com/trusty-updates/gcc-4.8
它将安装一个使用14.04 (即libmpc.so.3)中的libmpc版本的工作编译器。
您可能应该删除/usr/local/中的整个GCC安装,或者至少从您的路径中删除它,这样它就不被使用了。
在shell提示符下键入type -a gcc将显示路径中的所有gcc可执行文件,我希望它将显示:
/usr/local/bin/gcc
/usr/bin/gcc第一个是正在使用的坏版本,但与升级的系统不兼容。第二个是gcc包安装的,也是你应该使用的。
https://stackoverflow.com/questions/32650904
复制相似问题