C++ 为什么要自建g++;编译器无法编译我的代码

C++ 为什么要自建g++;编译器无法编译我的代码,c++,c,linux,gcc,c++11,C++,C,Linux,Gcc,C++11,我想在suse linux上使用最新的g++编译器(4.9.1),但suse只支持较旧的g++版本。所以,我从一个gnu镜像站点获取了最新的源代码,并自己编译了它。一切都很顺利。但是当我尝试使用内置的g++编译测试代码时,编译失败并出现错误, “/root/home/include/c++/4.9.1/x86_64-unknown-linux-gnu/bits/os_defines.h:39:22:致命错误:功能。h:没有此类文件或目录。” 我可以在“/root/home/include/c++

我想在suse linux上使用最新的g++编译器(4.9.1),但suse只支持较旧的g++版本。所以,我从一个gnu镜像站点获取了最新的源代码,并自己编译了它。一切都很顺利。但是当我尝试使用内置的g++编译测试代码时,编译失败并出现错误, “/root/home/include/c++/4.9.1/x86_64-unknown-linux-gnu/bits/os_defines.h:39:22:致命错误:功能。h:没有此类文件或目录。”

我可以在“/root/home/include/c++/4.9.1/parallel”中找到一个“/features.h”,但我觉得它应该在“/root/home/include/c++/4.9.1/

我将“/root/home/include/c++/4.9.1/parallel/features.h”复制到“/root/home/include/c++/4.9.1/”只是为了看看会发生什么。现在它抱怨没有找到错误“whcar.h”

我错过了什么吗

以下是我构建g++所遵循的步骤

1. /root/home/gcc_build/objdir# ../gcc-4.9.1/configure --prefix=/root/home/ --disable-multilib
2. /root/home/gcc_build/objdir# make -j16
3. /root/home/gcc_build/objdir# make install
4. /root/home/gcc_build/test#  /root/home/bin/g++ --sysroot /root/home -m64 test.cpp

我通过删除SysRooStand和指向C++目录和库路径到我的home目录来解决这个问题。我注意到的一点是,g++源代码没有附带libc和c头文件,libc必须单独安装。但是使用sysroot选项,g++试图查找我的主目录中的所有头文件

下面是我用来成功编译代码的命令

/root/home/bin/g++ -I /root/home/include/c++/4.9.1 -L /root/home/lib64 -Wl,--rpath=/root/home/lib64 --std=c++0x -m64 test.cpp

请看下面的图片。使用正确的“说明符”也很重要(-isystem,-L,-B,-I等)

您是执行了“安装到前缀”还是只是复制了可执行文件?@Tanuki我不知道OP做了什么,但“安装到前缀”并不能解决此问题。