我尝试在Fedora 20上使用Clang编译简单的hello world,得到了以下输出:d.cpp:1:10:致命错误:找不到'iostream'档案#include <iostream>我不知道怎么解决。
#include <iostream>
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>
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.
xzv2uavs3#
看起来你应该为你的clang版本提供-stdlib选项。-stdlib=libc++或-stdlib=libstdc++中的一个可能会起作用。关于您的主题有更多详细信息:When is it necessary to use the flag -stdlib=libstdc++?
-stdlib
-stdlib=libc++
-stdlib=libstdc++
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"
xjreopfe5#
对于任何在谷歌上搜索这一点并拥有MacOS的人,这里是我找到的解决方案:将以下内容添加到.bashrc/.zshrc文件中
export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
这个应该能治好
vngu2lb86#
确保您安装了与最新版本的gcc相对应的libstdc++。Clang似乎标识了最新的gcc安装,并且只在相应的目录中查找该版本。
brc7rcf07#
我已经尝试重新安装命令行工具和“ln”命令,但仍然无法修复。在尝试了网站上几乎所有其他的解决方案后,这个问题仍然无法解决。但事情将是明确的:编译器尝试在/usr/include中查找头文件,但尽管安装了命令行工具,但根本没有此文件夹。也许对我们来说,最好的直接方法是在这个IDE或其他编译器中安装Xcode和编码,但不是最低成本的情况。Mac有一个内置的叮当声,我们不需要安装额外的编译器。以下是步骤。我们可以检查一下CommandLineToos文件夹,如果你还没有安装它,试试这个命令提前安装它。
/usr/include
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.加上这个。
CommandLineTools
/Library/Developer/CommandLineTools/SDKs
MacOSX.sdk
MacOSX12.0.sdk
/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include
/Library/Developer/CommandLineTools/usr/include
g++ -v
bash_profile
export C_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include export CPLUS_INCLUDE_PATH=/Library/Developer/CommandLineTools/usr/include
1.找到它。源代码~/.bash_配置文件将修复此错误。
tnkciper8#
TL;DR:如果您没有sudo访问权限并且正在使用conda,则可能需要执行以下操作:
conda install gxx -c conda-forge
在我的例子中,我使用conda install clangxx安装了clang++,以为它会安装所需的依赖项,但结果我缺少libstdgxx-devel。我猜它是gxx的依赖项之一,所以它作为一个副作用安装。
conda install clangxx
clang++
libstdgxx-devel
gxx
8条答案
按热度按时间t40tm48m1#
这是因为没有安装g++,所以libstdc不存在。
您可以安装g,或者如果首选LLVM,则安装LLVM libc++并指定要使用它,如下所示:
您可能希望将/usr/bin/c++链接到默认编译器:
然后使用
lnxxn5zx2#
第3点为我解决了问题。
1.有同样的问题,软呢帽21::clang 3.5.0:
xzv2uavs3#
看起来你应该为你的clang版本提供
-stdlib
选项。-stdlib=libc++
或-stdlib=libstdc++
中的一个可能会起作用。关于您的主题有更多详细信息:
When is it necessary to use the flag -stdlib=libstdc++?
atmip9wb4#
-stdlib=libstdc++帮我解决了这个问题。下面是我完整的tasks.json配置:
xjreopfe5#
对于任何在谷歌上搜索这一点并拥有MacOS的人,这里是我找到的解决方案:
将以下内容添加到.bashrc/.zshrc文件中
这个应该能治好
vngu2lb86#
确保您安装了与最新版本的gcc相对应的libstdc++。Clang似乎标识了最新的gcc安装,并且只在相应的目录中查找该版本。
brc7rcf07#
我已经尝试重新安装命令行工具和“ln”命令,但仍然无法修复。
在尝试了网站上几乎所有其他的解决方案后,这个问题仍然无法解决。但事情将是明确的:编译器尝试在
/usr/include
中查找头文件,但尽管安装了命令行工具,但根本没有此文件夹。也许对我们来说,最好的直接方法是在这个IDE或其他编译器中安装Xcode和编码,但不是最低成本的情况。
Mac有一个内置的叮当声,我们不需要安装额外的编译器。以下是步骤。
我们可以检查一下
CommandLineToos
文件夹,如果你还没有安装它,试试这个命令提前安装它。在
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.加上这个。
1.找到它。
源代码~/.bash_配置文件
将修复此错误。
tnkciper8#
TL;DR:如果您没有sudo访问权限并且正在使用conda,则可能需要执行以下操作:
在我的例子中,我使用
conda install clangxx
安装了clang++
,以为它会安装所需的依赖项,但结果我缺少libstdgxx-devel
。我猜它是gxx
的依赖项之一,所以它作为一个副作用安装。