2016-12-12 8 views
0
#include <iostream> 
using namespace std; 

int main(){ 
    std::cout << "Hello World\n"; 
    return 0; 
} 

Команда 1 (работы)не могут включать стандартные библиотеки в файле C++

clang hello.cc -o hello -lc++ 

команды 2 (не работает)

/path/to/custom/clang hello.cc -o hello -lc++ 

main.cc:2:10: fatal error: 'iostream' file not found 
#include <iostream> 
     ^
1 error generated. 

Почему я не могу компилировать с command 2?

ответ

1

Это известная проблема Ubuntu. Их clang просто не настроен правильно. Я жаловался на это here - и это оставалось незафиксированным в течение многих лет.

Но хорошие новости заключается в том, что он теперь работает с последним выпуском 16.10.

Редактировать: Исходя из вашего обновленного вопроса, я бы сказал, что «custom clang» не знает о своих файлах include.

+0

Я нахожусь на macOS. возможно, это та же проблема. Есть ли обходной путь, чтобы исправить это? –

+0

Я привык возиться с ключами -I, но он становится беспорядочным, потому что две возможные реализации стандартной библиотеки C++. У меня нет окна OS X, но друзья делают, и «clang» и «clang ++» явно работают на них. Иногда, однако, также существует необходимость в 'g ++' (чтобы получить OpenMP, скажем). Мой приятель @coatless как несколько сообщений [в своем блоге] (http://thecoatlessprofessor.com/). –

3

Похоже, вы пытаетесь скомпилировать C++ с компилятором C. Попробуйте вместо этого использовать clang++.

clang++ hello.cc -o hello 

без запуска лязг как C++ компилятор не будет иметь C++ стандартные заголовки библиотек, доступных для Вас включить. С помощью clang++ доступны стандартные заголовки библиотек C++, и стандартная библиотека C++ связана для вас автоматически.

+1

Вы правы. Я пробовал с программой c, и она работает. Я обнаружил, что [custom clang] (https://github.com/obfuscator-llvm/obfuscator/tree/clang-425.0.24), который я использую, не содержит clang ++. –

 Смежные вопросы

  • Нет связанных вопросов^_^