Я попытался скомпилировать простой hello world в Fedora 20 с помощью Clang и получил следующий результат:
d.cpp: 1: 10: фатальная ошибка: файл iostream не найден
#include <iostream>
Я понятия не имею, как это решить.
Я попытался скомпилировать простой hello world в Fedora 20 с помощью Clang и получил следующий результат:
d.cpp: 1: 10: фатальная ошибка: файл iostream не найден
#include <iostream>
Я понятия не имею, как это решить.
Пункт 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.
/usr/include
, верно? До сих пор не знал об этом явно относительно того, где clang получает свои системные включения или системные заголовки.
- person jxramos; 13.12.2019
Это связано с тем, что 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>
Похоже, вы должны указать в своей сборке clang параметр -stdlib
. Один из -stdlib=libc++
или -stdlib=libstdc++
, вероятно, будет работать.
Подробности по вашей теме:
Когда необходимо использовать флаг -stdlib = libstdc ++ ?
-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"
Для тех, кто ищет это в Google и у вас есть MacOS, вот решение, которое я нашел:
Добавьте следующее в ваш файл .bashrc / .zshrc
export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
Это должно исправить.
Убедитесь, что у вас установлен libstdc ++, соответствующий последней версии установленного gcc. Кажется, что Clang идентифицирует последнюю установку gcc и просматривает только соответствующие каталоги для этой версии.
clang++ -v your_file.cpp
, убедитесь, что показаны правильные подключаемые каталоги. - person   schedule 13.10.2014make install
. И добавьте каталоги на свой путь. - person   schedule 13.10.2014iostream
- заголовок стандартной библиотеки. Если он не работает без каких-либо специальных параметров, значит, компилятор установлен неправильно. - person Jan Hudec   schedule 14.10.2014clang++ -v your_file.cpp
в нем. В комментарии это сложно прочитать. - person Jan Hudec   schedule 14.10.2014-std=c++11
и, возможно,-stdlib=libc++
включены в строку? - person firda   schedule 14.10.2014