Clang看不到基本标题

时间:2014-10-13 06:02:28

标签: c++ c++11 clang clang++ llvm-clang

我尝试使用Clang在Fedora 20上编译简单的hello world,我得到以下输出:

  

d.cpp:1:10:致命错误:' iostream'找不到文件

     

#include <iostream>

我不知道如何解决它。

7 个答案:

答案 0 :(得分:32)

这是因为没有安装g ++,所以libstdc ++不存在。

您可以安装g ++,或者如果首选LLVM,请安装LLVM libc ++并指定您要使用它,如下所示:

sudo apt-get install libc++-dev
clang++ -stdlib=libc++ <rest of arguments>

您可能希望将/ usr / bin / c ++链接到默认编译器:

ln -s /usr/bin/c++ /usr/bin/clang++-libc++

然后使用

编译
$ c++ <args_as_usual>

答案 1 :(得分:13)

第3点为我解决了这个问题。

1。 有同样的问题,fedora 21 :: clang 3.5.0:

clang++ -std=c++14 -pedantic -Wall test_01.cpp -o test_01 -v

2

ignoring nonexistent directory "/usr/lib/gcc/i686-redhat-linux/4.9.2/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/bin/../lib/clang/3.5.0/include
 /usr/include
End of search list.
test_01.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>

3

sudo yum install gcc-c++

4

#include "..." search starts here:
#include <...> search starts here:
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2/i686-redhat-linux
 /bin/../lib/gcc/i686-redhat-linux/4.9.2/../../../../include/c++/4.9.2/backward
 /usr/local/include
 /usr/bin/../lib/clang/3.5.0/include
 /usr/include
 /usr/lib/gcc/i686-redhat-linux/4.9.2/include
End of search list.

答案 2 :(得分:1)

对于任何使用谷歌搜索并拥有 MacOS 的人来说,这是我找到的解决方案:

将以下内容添加到您的 .bashrc/.zshrc 文件中

export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1

这应该可以解决它。

答案 3 :(得分:0)

看起来您应该为您的clang构建提供-stdlib选项。 -stdlib = libc ++或-stdlib = libstdc ++之一可能会起作用。有关您的主题的更多详细信息:

When is it necessary to use use the flag -stdlib=libstdc++?

答案 4 :(得分:0)

-stdlib = libstdc ++为我解决了它。这是我完整的task.json配置:

{
"tasks": [
    {
        "type": "shell",
        "label": "clang++ build active file",
        "command": "clang++",
        "args": [
            "-std=c++11",
            "-stdlib=libstdc++",
            "hello.cpp",
            "-o",
            "hello.out",
            "--debug"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
],
"version": "2.0.0"

答案 5 :(得分:0)

确保您安装了与最新版本的 gcc 相对应的 libstdc++。 Clang 似乎可以识别最新的 gcc 安装,并且只在该版本的相应目录中查找。

答案 6 :(得分:-3)

我遇到了这个问题,因为我有一个filename.c,我需要filename.cpp。当我告诉它我正在写C时,编译器显然无法找到C ++标题!