clang ve clang ++, clang-3.5 paketini yükledikten sonra bulunamadı


26

clang-3.5Paketi kurduktan sonra , komut satırına clangya clang++da komut satırına yazmak bana bu programların hangi paketlerde bulunabileceğini belirten bir mesaj verir. Kurulumu clang-3.5tekrar başlatmayı denedikten sonra , apt durumlarının zaten kurulu olduğunu ve en son sürümde olduğunu belirtir.

Orijinal kurulum şu komutla yapıldı:

sudo apt-get install clang-3.5 llvm

build-essential daha önce kuruldu.

Ne olduğu hakkında bir fikriniz var mı?

Yanıtlar:


30

Orada, ama yine de clang-3.5 olarak adlandırılıyor.

Ya clang-3.5(ya da clang++-3.5) olarak çalıştırabilir ya da benim yaptığım gibi bir sembolik bağlantı kurabilirsiniz (normal clang yüklemek işe yaramadı):

sudo ln -s /usr/bin/clang-3.5 /usr/bin/clang
sudo ln -s /usr/bin/clang++-3.5 /usr/bin/clang++

Çirkin iş, belki de; ama en azından şimdilik çalışıyor :)


Clang-6.0 için, ayrıca şunu da yapmalıyım:ln -s /usr/bin/llc-6.0 /usr/bin/llc
forza azzurri

12

Varsayılan olarak clang kullanmak için uygun bir yol ccve c++kullanmaktır update-alternatives:

Aynı veya benzer işlevleri yerine getiren birçok programın aynı anda tek bir sisteme kurulması mümkündür. Örneğin, birçok sistemde aynı anda kurulu birkaç metin editörü vardır. Bu, bir sistemin kullanıcılarına, istenirse, her birinin farklı bir düzenleyici kullanmasına olanak tanıyan bir seçenek sunar, ancak bir programın, kullanıcının belirli bir tercih belirtmemiş olması durumunda, iyi bir düzenleyici seçimi yapmasını zorlaştırır.

bu yüzden önce eklemelisiniz clang-3.5veya clang++-3.5örneğin gccve g++:

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang-3.5 100
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100

Herhangi bir zamanda geri dönmeniz gerekiyorsa gccveya seçeneği g++kullanabilirsiniz --config:

sudo update-alternatives --config c++

Argümanlar hakkında ek bir açıklama ekler misiniz? İki yol arasında neden cc/ c++in? Bu da ne 100sonunda? Öncelik?
helmesjo,

update-alternativesDokümanlara bir göz atın . Burada özetleyeceğim her şeyden daha iyi açıklamaları olduğunu düşünüyorum.
Yan Foto

5

Ubuntu 15.04'te clang paketini clang-xx paketi boyunca da yükleyebilirsiniz. Daha sonra clang ++ yazabilirsiniz ve uygun yürütülebilir dosya bulunmalıdır.

sudo apt-get install clang

"Apt-get install clang" basitçe en son sürümü yükleyip kullanmaz mıydı? OP v3.5 kuruyorsa, en sonuncusunu kullanmak istemez.
amfcosta

4

Yan Foto'nun cevabına ekleme yapmak (ve amacınızın kullanılabilir olması, clangancak mutlaka kullanılması gerektiği gibi cc) olması durumunda, tüm programları tek bir seferde ekleyebilirsiniz.

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.8 380 \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 \
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-3.8 \
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-3.8 \
--slave /usr/bin/clang-rename clang-rename /usr/bin/clang-rename-3.8

(Her clang sürümüyle birlikte gelen ikilik kümenin farklı olabileceğini unutmayın; örneğin, 3.6'da clang-tblgen3.8 vardır.)

Bunu kurduğunuz her clang sürümü için tekrarlarsanız, sadece tek bir update-alternativeskomut kullanarak aralarında geçiş yapabilirsiniz .

(Bu arada, görünüşe göre, bu bağlantıları Ubuntu paketlerine dahil edip etmeme konusunda halen devam eden bir tartışma var: https://bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493 )


0

Ana dizininizde bir .bashrc dosyası oluşturun. Bu kod satırını yazın.

takma ad clang ++ = "clang ++ - 3.5"

Terminalini kapat. Tekrar aç. Ardından programınızı tekrar derlemeye çalışın.

"Clang ++ - 3.5" komut adında sürümü belirtmediğiniz sürece, clang'ı söyleyebileceğimden işe yaramaz. Bu yüzden sadece .bashrc dosyamda adı takma. Bu yüzden sadece "clang ++" yazmam gerekiyor.

Bu arada clang 3.5'i indirdim, bu yüzden önceki tavsiyeyi sürümünüze ayarlayın.


0

Düzgün bir şekilde kurulu clang'ınız varsa, sürüm numarasını programın adıyla birlikte yazma zorluğundan kurtarmanın başka bir kolay yolu, örneğin (clang ++ - 3.5 yüklü) otomatik tamamlama özelliğini kullanmaktır:

clang+[TAB][ENTER]

Yani sadece yazmanız clang+, vurmanız Tabve basmanız yeterlidir Enter. Dizin adları, dosya adları vb. İle aynı şekilde çalışır (Yüklü bir programın birden fazla sürümüne sahipseniz, bu size yardımcı olmaz.)


0

Bu, clang- 3.8 (Ubuntu 16.04'te olduğu gibi) kurulu ise , clang- 4.0 için güncelleme alternatiflerini ayarlamalıdır :

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-4.0 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-4.0 100
sudo update-alternatives --install /usr/bin/clang-apply-replacements clang-apply-replacements /usr/bin/clang-apply-replacements-4.0 100
sudo update-alternatives --install /usr/bin/clang-check clang-check /usr/bin/clang-check-4.0 100
sudo update-alternatives --install /usr/bin/clang-query clang-query /usr/bin/clang-query-4.0 100
sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-4.0 100
sudo update-alternatives --install /usr/bin/scan-build scan-build /usr/bin/scan-build-4.0 100
sudo update-alternatives --install /usr/bin/scan-view scan-view /usr/bin/scan-view-4.0 100

0

Johann Wendin'in sembolik bağlantı hakkında cevabını ekliyor. Bir de kök kabuğu , tek seferde tüm çeşitli clang araçları bağlayabilirsiniz:

Örneğin

find /usr/bin/ -name clang*  | sed -E 's/^(\/usr\/bin\/.*)(\-[0-9]*)$/ln -s -v \1\2 \1/' | xargs -d '\n' -n 1 bash -c

ve sonra için tekrarlayın:

llc-*
lld-*
lldb-*
llvm-*

O zaman her şey birbirine bağlı olmalı, sadece küçük bir seçim değil. (Belki hala bir şey unuttum).

Bu, tüm dosyaları / usr / bin içindeki desene göre bulur, takip eden sayıları kaldırır (-8 veya -9 veya hatta -10) ve sonra her birinde sembolik bağlantılar oluşturur.

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.