C ++ 'ı Clang ile nasıl derlerim?


98

Ubuntu'da apt-get kullanarak Clang'ı kurdum ve onu kullanarak C dosyalarını başarılı bir şekilde derleyebiliyorum. Ancak, C ++ 'ı bunun aracılığıyla nasıl derleyeceğime dair hiçbir fikrim yok. C ++ 'ı derlemek için ne yapmam gerekiyor?

Yanıtlar:


150

Komut clangC içindir ve komut clang++C ++ içindir.


52

Sorunu doğrudan ele alan bir yanıtın neden olmadığını bilmiyorum. C ++ programını derlemek istediğinizde kullanmak en iyisidir clang++. Örneğin şu benim için çalışıyor:

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

Doğru derlenirse, yürütülebilir dosyayı üretir ve dosyayı testkullanarak çalıştırabilirsiniz ./test.

Ya da sadece clang++ test.ccprogramı derlemek için kullanabilirsiniz . Adlı varsayılan bir yürütülebilir dosya üretecektir a.out. ./a.outDosyayı çalıştırmak için kullanın .

Eğer g ++ 'ya aşina iseniz, tüm süreç g ++ gibidir. Bkz Bu yayını ile birlikte hangi uyarılar kontrol etmek -Wallseçeneği. Bu sayfa , Clang tarafından desteklenen tanılama bayraklarının bir listesini gösterir.


4
Soruyu gerçekten cevapladığınız için teşekkürler.
Curyous

50

Ayrıca, gelecek nesil için - Clang (GCC gibi) -x, giriş dosyalarının dilini ayarlamak için anahtarı kabul eder, örneğin,

$ clang -x c++ some_random_file.txt

Bu posta listesi dizisi, arasındaki clangve clang++iyi arasındaki farkı açıklıyor : clang ve clang ++ arasındaki fark


4
İle derlendiğinde clang -x c ++ ile bir linker hatası aldım #include <iostream>. -lstdc ++ bayrağı bu sorunu çözdü.
Slav

1
Şimdi gözümün önünde Clang'ın kaynak kodu var. Derleme sırasında (Windows'ta), önce clang.exebu yürütülebilir dosyayı oluşturur ve sonra clang++.exe. Dolayısıyla, aynı çalıştırılabilir dosya, tam çalışma zamanında C veya C ++ derleyicisi olarak davranıp davranmayacağını ayırt etmek için kendi adını kontrol eder. HTH.
Serge Rogatch

Bir not olarak, isteğe bağlı -x c++bir şekilde elde çok yararlı -extra-argiçin çınlama-Tidy C yerine C ++ ihtiva eden bir .h dosyası tedavi etmek için zorlamak için,
Reklam N

Bu, her şeyi kaynaktan oluşturmadığınız sürece gerçekten yararlı olamayacak kadar sınırlayıcıdır. Sadece kullanmak clang++ve ona ne tür dosyalar sağladığınızı algılamasına izin vermek daha iyidir . Bir proje içerebilir zaman .cppdosyaları .lldosyaları (LLVM ir) ve .o, .a, .soüçüncü parti kütüphanelerinden ve ne değil dosyaları, clang -x c++sadece yukarı fırlatır.
Sahsahae

5

Kaynaktan Clang oluştururken benzer bir sorun yaşadım (ama ile değil sudo apt-get install. Bu, çalıştırdığınız Ubuntu sürümüne bağlı olabilir).

clang++C ++ kitaplıklarınızın doğru konumlarını bulup bulamayacağınızı kontrol etmeye değer olabilir :

"#İnclude <...> arama burada başlar:" altındaki g++ -v <filename.cpp>ve sonuçlarını karşılaştırın clang++ -v <filename.cpp>.


1

çözüm 1:

  clang++ your.cpp

çözüm 2:

  clang your.cpp -lstdc++

çözüm 3:

   clang -x c++ your.cpp 

0

Bir Terminal penceresi açın ve proje dizininize gidin. Hangi derleyiciyi kurduğunuza bağlı olarak bu komut setlerini çalıştırın:

Clang ++ kullanarak birden çok C ++ dosyasını derlemek için:

$ clang++ *.cpp 
$ ./a.out 

G ++ kullanarak birden çok C ++ dosyasını derlemek için:

$ g++ -c *.cpp 
$ g++ -o temp.exe *.o
$ ./temp.exe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.