В настоящее время я борюсь с clang ++, и после долгого поиска в Интернете я решил задать свой вопрос. Я на OS X и использую clang ++ через Emacs (он используется flycheck для выделения ошибок, между прочим). У меня есть очень простой файл, который начинается с:
#include <iostream>
И линия подчеркнута красным. Когда я проверяю журналы лжи, вот что у меня есть:
In file included from ./point.hpp:4:
In file included from /usr/local/Cellar/llvm/3.6.2/bin/../include/c++/v1/iostream:37:
/usr/local/Cellar/llvm/3.6.2/bin/../include/c++/v1/__config:23:10: fatal error: 'unistd.h' file not found
#include <unistd.h>
Итак, ошибка исходит от iostream
включать и в iostream
есть #include <unistd.h>
что Clang ++ не любит.
Я скажу это немедленно, у меня есть Xcode И инструменты командной строки. Так что мой unistd.h
должен быть там. Мой код также компилируется (через g ++), так что все в порядке. Это просто clang ++, который потерян.
Что-то, что я замечаю, это то, что он собирается в мою папку llvm (которую я установил с помощью homebrew), чтобы получить iostream
Это не кажется правильным. Он должен получить iostream
в моей системе, верно? Так /usr/local/include/c++/iostream
, Может ли это быть проблемой? Если так, как я могу сказать это, чтобы получить право iostream
?
И если это не проблема, как я могу решить мой unistd.h
проблема?
Заранее спасибо !
РЕДАКТИРОВАТЬ : С clang++ -stdlib=libc++ image.cpp
команда, я получаю это:
clang++ -stdlib=libc++ image.cpp
In file included from image.cpp:1:
In file included from ./image.hpp:4:
In file included from ./figure.hpp:4:
In file included from ./point.hpp:4:
In file included from /usr/local/Cellar/llvm/3.6.2/bin/../include/c++/v1/iostream:37:
/usr/local/Cellar/llvm/3.6.2/bin/../include/c++/v1/__config:23:10: fatal error: 'unistd.h' file not found
#include <unistd.h>
^
1 error generated.`
Итак, та же проблема.
РЕДАКТИРОВАТЬ 2 : Я заметил which clang++
вернется /usr/local/bin/clang++
, поэтому я попытался специально использовать XClan Clang ++ и вот результат:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -stdlib=libc++ image.cpp
In file included from image.cpp:1:
In file included from ./image.hpp:4:
In file included from ./figure.hpp:4:
In file included from ./point.hpp:4:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:37:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:23:10: fatal error: 'unistd.h' file
not found
#include <unistd.h>
^
1 error generated.
То же самое касается заголовков C ++, связанных с XCode.
Задача ещё не решена.
Других решений пока нет …