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

时间:2014-08-10 16:34:06

标签: 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:致命错误:features.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

2 个答案:

答案 0 :(得分:2)

我通过删除sysroot选项并将c ++ include和library path指向我的主目录来解决了这个问题。我注意到的一件事是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

答案 1 :(得分:0)

看看GCC Directory Options。重要的是使用正确的“说明符”(-isystem,-L,-B,-I etc)