c++ Clang看不到基本标题

kupeojn6  于 2022-11-27  发布在  其他
关注(0)|答案(8)|浏览(174)

我尝试在Fedora 20上使用Clang编译简单的hello world,得到了以下输出:
d.cpp:1:10:致命错误:找不到'iostream'档案
#include <iostream>
我不知道怎么解决。

t40tm48m

t40tm48m1#

这是因为没有安装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>
lnxxn5zx

lnxxn5zx2#

第3点为我解决了问题。

1.有同样的问题,软呢帽21::clang 3.5.0:

clang++ -std=c++14 -pedantic -Wall test_01.cpp -o test_01 -v
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>
sudo yum install gcc-c++
#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.
xzv2uavs

xzv2uavs3#

看起来你应该为你的clang版本提供-stdlib选项。-stdlib=libc++-stdlib=libstdc++中的一个可能会起作用。
关于您的主题有更多详细信息:
When is it necessary to use the flag -stdlib=libstdc++?

atmip9wb

atmip9wb4#

-stdlib=libstdc++帮我解决了这个问题。下面是我完整的tasks.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"
xjreopfe

xjreopfe5#

对于任何在谷歌上搜索这一点并拥有MacOS的人,这里是我找到的解决方案:
将以下内容添加到.bashrc/.zshrc文件中

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

这个应该能治好

vngu2lb8

vngu2lb86#

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

brc7rcf0

brc7rcf07#

我已经尝试重新安装命令行工具和“ln”命令,但仍然无法修复。
在尝试了网站上几乎所有其他的解决方案后,这个问题仍然无法解决。但事情将是明确的:编译器尝试在/usr/include中查找头文件,但尽管安装了命令行工具,但根本没有此文件夹。
也许对我们来说,最好的直接方法是在这个IDE或其他编译器中安装Xcode和编码,但不是最低成本的情况。
Mac有一个内置的叮当声,我们不需要安装额外的编译器。以下是步骤。
我们可以检查一下CommandLineToos文件夹,如果你还没有安装它,试试这个命令提前安装它。

xcode-select --install

CommandLineTools文件夹中,我们可以查看SDK的路由,即/Library/Developer/CommandLineTools/SDKs
/Library/Developer/CommandLineTools/SDKs
我们可以使用MacOSX.sdk,对我来说,它也是MacOSX12.0.sdk,来查找头文件。C的基本头文件位于/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include
但是它不包含在C基本头中,C基本头可以在/Library/Developer/CommandLineTools/usr/include中找到,我们也可以在终端中使用命令g++ -v找到此路由。
g++ -v
因此解决方案将是显而易见的,在终端中键入以下命令。
1.打开bash_profile
打开~/.bash_配置文件
1.加上这个。

export C_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include

 export CPLUS_INCLUDE_PATH=/Library/Developer/CommandLineTools/usr/include

1.找到它。
源代码~/.bash_配置文件
将修复此错误。

tnkciper

tnkciper8#

TL;DR:如果您没有sudo访问权限并且正在使用conda,则可能需要执行以下操作:

conda install gxx -c conda-forge

在我的例子中,我使用conda install clangxx安装了clang++,以为它会安装所需的依赖项,但结果我缺少libstdgxx-devel。我猜它是gxx的依赖项之一,所以它作为一个副作用安装。

相关问题