Я встановив Clang за допомогою apt-get в Ubuntu, і я можу успішно скомпілювати файли C, використовуючи його. Однак я не маю уявлення про те, як скомпілювати через нього C ++. Що мені потрібно зробити для компіляції C ++?
Я встановив Clang за допомогою apt-get в Ubuntu, і я можу успішно скомпілювати файли C, використовуючи його. Однак я не маю уявлення про те, як скомпілювати через нього C ++. Що мені потрібно зробити для компіляції C ++?
Відповіді:
Крім того, для нащадків - Clang (як GCC) приймає -x
перемикач для встановлення мови вхідних файлів, наприклад,
$ clang -x c++ some_random_file.txt
Цей потік списку розсилки пояснює різницю між clang
і clang++
добре: різниця між кланг та кланг ++
clang.exe
, а потім копіює цей виконуваний файл clang++.exe
. Отже, це той самий виконуваний файл, просто під час виконання він перевіряє власне ім’я, щоб визначити, чи поводитись як компілятор C або C ++. HTH.
-x c++
був дуже корисним , щоб дати як -extra-arg
до брязкотом-Tidy , щоб змусити його лікувати .h файл, який містить C ++ замість С
clang++
і нехай він виявляє, які файли ви постачаєте до нього. Коли проект може містити .cpp
файли, .ll
файли (LLVM л) і .o
, .a
, .so
а що ні файлів з сторонніх бібліотек, clang -x 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 із вихідного коду (але не з sudo apt-get install
. Це може залежати від версії Ubuntu, яку ви використовуєте).
Можливо, варто перевірити, чи clang++
можна знайти правильні місця розташування ваших бібліотек C ++:
Порівняйте результати g++ -v <filename.cpp>
та clang++ -v <filename.cpp>
під "#include <...> пошук тут починається:".
#include <iostream>
. -lstdc ++ прапор вирішив цю проблему.