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