我尝试用 Clang 在 Fedora 20上编译一个简单的 hello world,结果如下:
D.cpp: 1:10: 致命错误: 未找到“ iostream”文件 #include <iostream>
D.cpp: 1:10: 致命错误: 未找到“ iostream”文件
#include <iostream>
我不知道该怎么解决。
这是因为没有安装 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. 有同样的问题,软呢帽21: : 叮当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.
看起来你应该提供与 -stdlib选项您的叮当构建。其中的 -stdlib=libc++或 -stdlib=libstdc++可能会工作。
-stdlib
-stdlib=libc++
-stdlib=libstdc++
关于你的主题还有更多的细节:
什么时候需要使用标志 -stdlib = libstdc + + ?
- stdlib = libstdc + + 帮我解决了这个问题:
{ "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"
对于任何在谷歌上搜索这个并且有一个 MacOS的人来说,这是我找到的解决方案:
将以下内容添加到. bashrc/. zhrc 文件中
export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
这个应该能修好。
确保已经安装了与 gcc 的最新版本相对应的 libstdc + + 。Clang 似乎标识了最新的 gcc 安装,并且只查看该版本的适当目录。
我尝试重新安装命令行工具和“ ln”命令,但仍然无法修复。
在尝试了网站上几乎所有其他的解决方案之后,这个问题仍然无法解决。但是事情很清楚: 编译器试图在 /usr/include中找到头文件,但是尽管安装了命令行工具,却根本没有这个文件夹。
/usr/include
对我们来说,最直接的方法可能是在这个 IDE 或其他编译器中安装 Xcode 和编码,但不是最低成本的情况。
Mac 有一个内置的 Clang,我们不需要安装额外的编译器。
我们可以检查 CommandLineToos文件夹,如果你还没有安装它,尝试这个命令来提前安装它。
CommandLineToos
xcode-select --install
在 CommandLineTools文件夹中,我们可以检查 SDK 的路由,即 /Library/Developer/CommandLineTools/SDKs
CommandLineTools
/Library/Developer/CommandLineTools/SDKs
/Library/Developer/CommandLineTools/SDK
我们可以使用 MacOSX.sdk,对于我来说,它也是 MacOSX12.0.sdk,来找到标题。在 /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include中可以找到 C 基本标头。 /Library/Developer/CommandLineTools/SDK/MacOSX12.0. sdk/usr/include/Library/Developer/CommandLineTools/SDK/MacOSX12.0. sdk/usr/include
MacOSX.sdk
MacOSX12.0.sdk
/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include
但是它不包含 C + + 基本头文件,在 /Library/Developer/CommandLineTools/usr/include中可以找到 C + + 基本头文件。我们可以通过命令 g++ -v在终端中找到这条路线。
/Library/Developer/CommandLineTools/usr/include
g++ -v
G + +-v
因此解决方案是显而易见的,在终端中键入以下命令。
打开 bash_profile。
bash_profile
Open ~/. bash _ profile
加上这个。
export C_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include export CPLUS_INCLUDE_PATH=/Library/Developer/CommandLineTools/usr/include
找出来。
Source ~/. bash _ profile 源 ~/. bash _ profile
此错误将得到修复。
TL; DR : 如果您没有 sudo 访问权限并正在使用 conda,那么您可能需要:
conda install gxx -c conda-forge
在我的例子中,我使用 conda install clangxx安装了 clang++,认为它会安装所需的依赖项,但结果是我错过了 libstdgxx-devel。我想这是 gxx的一个依赖项,所以它作为一个副作用被安装。
conda install clangxx
clang++
libstdgxx-devel
gxx