我想在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
答案 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)