2012-02-05 11 views
66

Zainstalowałem Clang przy użyciu apt-get w Ubuntu, i mogę z powodzeniem skompilować pliki C z niego korzystające. Jednak nie mam pojęcia, jak skompilować za jego pomocą C++. Co muszę zrobić, aby skompilować C++?Jak skompilować C++ z Clang?

Odpowiedz

106

Polecenie clang dotyczy C, a polecenie clang++ dotyczy C++.

+0

Nie, nie działa. Czy musimy go dodatkowo zainstalować? – pythonic

+24

Obawiam się, że moja kryształowa kula to wada, więc musiałbyś powiedzieć nam, czy są jakieś komunikaty o błędach;) –

+4

@ user1018562 Proszę określić "nie działa". Czy to polecenie "nie znaleziono" lub inny błąd? – adl

3

Miałem podobny problem podczas budowania Clang ze źródła (ale nie z sudo apt-get install. Może to zależeć od wersji Ubuntu, z której korzystasz.

To może być warta sprawdzenia, czy clang++ można znaleźć odpowiednie lokalizacje swoich bibliotek C++:

Porównaj wyniki g++ -v <filename.cpp> i clang++ -v <filename.cpp>, pod „#include < ...> Wyszukiwanie zaczyna się tutaj”.

38

Również dla potomności - Clang (jak GCC) akceptuje przełącznik -x aby ustawić język plików wejściowych, na przykład,

$ clang -x c++ some_random_file.txt 

Ta lista wątek wyjaśnia różnicę między clang i clang++ dobrze : Difference between clang and clang++

+2

Miałem błąd linkera z _clang -x C++ _ gdy skompilowałem plik cpp z '#include '. Flaga _-lstdC++ _ rozwiązała ten problem. – Vyacheslav

+1

Mam teraz kod źródłowy Clang na moich oczach. Podczas kompilacji (w systemie Windows) najpierw buduje 'clang.exe', a następnie kopiuje pliki wykonywalne do' clang ++. Exe'. Tak więc jest to ten sam plik wykonywalny, tylko w czasie wykonywania sprawdza własną nazwę, aby rozróżnić, czy zachowywać się jak kompilator C lub C++. HTH. –

+0

Jako notatkę, opcja '-x C++ 'była bardzo przydatna jako" -extra-arg' do * clang-tidy *, aby zmusić ją do traktowania pliku .h jako zawierającego C++ zamiast C. –

7

Nie wiem, dlaczego nie ma odpowiedzi bezpośrednio rozwiązującej problem. Gdy chcesz skompilować program w C++, najlepiej jest użyć clang++. Na przykład, następujące prace dla mnie:

clang++ -Wall -std=c++11 test.cc -o test 

Jeśli skompilowany poprawnie, będzie produkować plik wykonywalny test i można uruchomić plik za pomocą ./test.

Lub możesz po prostu użyć clang++ test.cc, aby skompilować program. Zostanie utworzony domyślny plik wykonywalny o nazwie a.out. Użyj pliku ./a.out, aby uruchomić plik.

Cały proces jest podobny do g ++, jeśli znasz g ++. Zobacz this post, aby sprawdzić, które ostrzeżenia są dołączone do opcji -Wall. This page wyświetla listę flag diagnostycznych obsługiwanych przez Clang.

Powiązane problemy