Я установил clang в моей среде conda вместе с gcc.Их версии:
gcc 7.2.0
clang 7.0.0
libcxx 7.0.0
Затем я создал файл hello world src a.cpp
Если я скомпилирую файл, используя clang++ a.cpp
,Ошибка:
a.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^~~~~~~~~~
1 error generated.
При использовании clang++ a.cpp --stdlib=libstdc++
ошибка такая же
При использовании clang++ a.cpp --stdlib=libc++
ошибка становится
~/conda/envs/test/bin/ld: cannot find crtbegin.o: No such file or directory
~/conda/envs/test/bin/ld: cannot find -lgcc
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
Использование clang++ a.cpp -I$HOME/conda/envs/test/include/c++/7.2.0
In file included from a.cpp:1:
/site/home/shliu/conda/envs/test/include/c++/7.2.0/iostream:38:10: fatal error: 'bits/c++config.h' file not found
#include <bits/c++config.h>
^~~~~~~~~~~~~~~~~~
1 error generated.
Я использую общий компьютер, поэтому не могу установить общесистемные компиляторы и файлы заголовков.
Вопросы:
- Что я должен сделать, чтобы это работало?
- Если
clang
не поставляется с собственными заголовочными файлами, и мне нужно использовать то, что предоставлено gcc
, следует ли мне рассмотреть совместимость clang version
и gcc version
? - Нужно ли устанавливать
libc++
в той же среде conda, чтобы использовать clang++
?
После некоторого теста я нашел способ сделать этов Конде, которая размещена в качестве ответа.Однако я до сих пор не понимаю, как работает clang
, особенно его связь с gcc
.Я был бы очень признателен, если бы кто-нибудь мог ответить (и я приму это как ответ на этот пост):
- Пересылает ли
clang
все задания на gcc
, поэтому мы всегда нуждаемсяgcc
цепочка инструментов, которая будет установлена для использования clang
? - Я нашел папку включения для
clang
, которая равна $HOME/conda/envs/test/include/c++/v1
вместе с $HOME/conda/envs/test/include/c++/7.2.0
, что из gcc
.Но если было указано --gcc-toolchain
, в папке v1
не производится поиск заголовков (что можно увидеть из вывода, добавив -v
в компилятор. Тогда каково использование включаемых файлов v1
?