Я установил Clang с помощью apt-get в Ubuntu, и я могу успешно компилировать файлы C, используя его. Однако я понятия не имею, как через него скомпилировать C ++. Что мне нужно сделать для компиляции C ++?
Команда clang
предназначена для C, а команда clang++
- для C ++.
Я не знаю, почему нет ответа, прямо касающегося проблемы. Когда вы хотите скомпилировать программу на C ++, лучше всего использовать clang++
. Например, у меня работает следующее:
clang++ -Wall -std=c++11 test.cc -o test
Если он скомпилирован правильно, он создаст исполняемый файл test
, и вы можете запустить его, используя ./test
.
Или вы можете просто использовать clang++ test.cc
для компиляции программы. Будет создан исполняемый файл по умолчанию с именем a.out
. Используйте ./a.out
для запуска файла.
Весь процесс очень похож на g ++, если вы знакомы с g ++. Посмотрите этот пост, чтобы узнать, какие предупреждения включены в -Wall
опцию. На этой странице показан список диагностических флагов, поддерживаемых Clang.
Примечание об использованииclang -x c++
: Ким Грасман говорит, что вы также можете использовать clang -x c++
для компиляции программ cpp, но это может быть неверно. Например, у меня есть простая программа ниже:
#include <iostream>
#include <vector>
int main() {
/* std::vector<int> v = {1, 2, 3, 4, 5}; */
std::vector<int> v(10, 5);
int sum = 0;
for (int i = 0; i < v.size(); i++){
sum += v[i]*2;
}
std::cout << "sum is " << sum << std::endl;
return 0;
}
clang++ test.cc -o test
будет успешно компилироваться, но clang -x c++
не будет, показывая много ошибок неопределенных ссылок. Так что я думаю, что они не совсем эквивалентны. Лучше clang++
вместо этого clang -x c++
при компиляции программ на C ++.
Кроме того, для потомков - Clang (например, GCC) принимает
-x
переключатель для установки языка входных файлов, например,Эта ветка списка рассылки хорошо объясняет разницу между
clang
иclang++
: Разница между clang и clang ++источник
#include <iostream>
. -lstdc ++ флаг решил эту проблему.clang.exe
выполняется сборка , а затем копирование этого исполняемого файла вclang++.exe
. Таким образом, это один и тот же исполняемый файл, только во время выполнения он проверяет свое собственное имя, чтобы определить, вести себя как компилятор C или C ++. HTH.-x c++
был очень полезным , чтобы дать как-extra-arg
к лязгом-Tidy , чтобы заставить его лечить .h файл, содержащий C ++ вместо Сclang++
и позволить ему определять, какие файлы вы ему предоставляете. Когда проект может содержать.cpp
файлы,.ll
файлы (LLVM л) и.o
,.a
,.so
а что нет файлов из сторонних библиотек,clang -x c++
просто вырвет.clang++
работает, ноclang -x c++
показывает множество неопределенных ссылочных ошибок (другие флаги такие же). Так что, думаю, лучше всего использоватьclang++
. Протестированная версия clang: 11.0.0.У меня была аналогичная проблема при сборке Clang из исходников (но не с
sudo apt-get install
. Это может зависеть от версии Ubuntu, которую вы используете).Возможно, стоит проверить,
clang++
можно ли найти правильное расположение ваших библиотек C ++:Сравните результаты
g++ -v <filename.cpp>
и вclang++ -v <filename.cpp>
разделе "#include <...> поиск начинается здесь:".источник
решение 1:
решение 2:
решение 3:
источник
Откройте окно терминала и перейдите в каталог вашего проекта. Выполните эти наборы команд в зависимости от того, какой компилятор вы установили:
Чтобы скомпилировать несколько файлов C ++ с помощью clang ++:
Чтобы скомпилировать несколько файлов C ++ с использованием g ++:
источник