gcc:未通过健全性检查错误,我想是由于 cxx USE 标志丢失

gcc:未通过健全性检查错误,我想是由于 cxx USE 标志丢失

最近我完成了emerge -e world,然后发现它gcc是在没有标志的情况下编译的cxx。现在我无法编译任何 C++ 包,因为

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

我正在考虑复制从equery f gcc|grep -v share stage3 返回的文件。有帮助吗?有没有更简单的方法?

更新1 这是我的配置日志

更新2 这是我的制作配置文件cxx请注意USE 中 有一个标志。我最近添加了它,但它没有帮助,因为我无法重建软件包。

更新3我尝试通过以下方式从二进制包重新安装 gcc-4.6.3

emerge -avK gcc:4.6

它成功完成,但错误没有消失。

另外,我注意到:

configure:11955: /lib/cpp  conftest.cpp
cpp: error: conftest.cpp: C++ compiler not installed on this system
configure:11955: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "expat"
| #define PACKAGE_TARNAME "expat"
| #define PACKAGE_VERSION "2.1.0"
| #define PACKAGE_STRING "expat 2.1.0"
| #define PACKAGE_BUGREPORT "[email protected]"
| #define PACKAGE_URL ""
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
|                    Syntax error

看起来它声称我的系统上没有安装 C++ 编译器。但这听起来像是垃圾,因为它gcc:4.6是从 bin-package 安装的,并且我假设它是使用 C++ 支持编译的。

更新4确实g++有问题

uhradio ~ # g++ queue.cpp 
gcc-config: error: could not run/locate 'g++'
uhradio ~ # cpp queue.cpp 
cpp: error: queue.cpp: C++ compiler not installed on this system

的输出gcc-config -l是:

[1] x86_64-pc-linux-gnu-4.6.3 *

答案1

可能就是您正在寻找的。简而言之,安装内核头文件就可以了。

答案2

虽然emerge -avK gcc:4.6没有帮助,但我手动提取gcc-4.6.3.tbz2/目录然后设置gcc-config 1,它有所帮助(虽然我/usr/lib已经执行了该操作,但我已手动将其符号链接回。现在我正在使用USE 标志/usr/lib64重建两个 gcc(4.5 和 4.6)cxx

我的问题现在变成了另一个。为什么cxxUSE 标志从 stage3 构建的系统中消失了?我安装 gentoo linux 已经很多年了,从来没有cxx像现在这样明确设置过 USE 标志。

相关内容