clang-3.5 पैकेज स्थापित करने के बाद clang और clang ++ नहीं मिला


26

clang-3.5पैकेज को स्थापित करने के बाद , टाइपिंग clangया clang++कमांड लाइन पर मुझे एक संदेश मिलता है जिसमें कहा गया है कि उन कार्यक्रमों को कौन से पैकेजों में पाया जा सकता है। clang-3.5फिर से स्थापित करने का प्रयास करने का प्रयास करते हुए , यह पहले से ही स्थापित और नवीनतम संस्करण में बताया गया है।

मूल स्थापित कमांड के साथ किया गया था:

sudo apt-get install clang-3.5 llvm

build-essential पहले स्थापित किया गया था।

क्या हो सकता है पर कोई विचार?

जवाबों:


30

यह वहाँ है, लेकिन इसे अभी भी क्लेंग-3.5 कहा जाता है।

आप या तो इसे clang-3.5(या clang++-3.5) के रूप में निष्पादित कर सकते हैं या इसे एक सिमलिंक की तरह सेट कर सकते हैं जैसे मैंने किया (नियमित रूप से क्लैंग ने काम नहीं किया):

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

बदसूरत काम-के आसपास, शायद; लेकिन कम से कम यह अब के लिए काम करता है :)


Clang-6.0 के लिए, मुझे इसके अलावा करना होगा:ln -s /usr/bin/llc-6.0 /usr/bin/llc
forza azzurri

12

अपने डिफ़ॉल्ट के रूप बजना उपयोग करने के लिए उचित तरीके से ccऔर c++उपयोग करने के लिए है update-alternatives:

एक ही समय में एक ही सिस्टम पर एक ही या समान फ़ंक्शन को पूरा करने वाले कई कार्यक्रमों के लिए संभव है। उदाहरण के लिए, कई प्रणालियों में एक ही बार में कई पाठ संपादक स्थापित होते हैं। यह एक प्रणाली के उपयोगकर्ताओं को विकल्प देता है, यदि प्रत्येक वांछित है, तो एक अलग संपादक का उपयोग करने की अनुमति देता है, लेकिन यदि उपयोगकर्ता ने किसी विशेष वरीयता को निर्दिष्ट नहीं किया है, तो प्रोग्राम के लिए संपादक का एक अच्छा विकल्प बनाना मुश्किल है।

इसलिए सबसे पहले आप जोड़ने की जरूरत है clang-3.5या clang++-3.5विकल्प जैसे के रूप में gccऔर 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

यदि किसी भी समय आपको वापस स्विच करने की आवश्यकता है gccया g++आप --configविकल्प का उपयोग कर सकते हैं :

sudo update-alternatives --config c++

क्या आप तर्कों के बारे में कुछ अतिरिक्त स्पष्टीकरण जोड़ सकते हैं? क्यों cc/ c++दोनों रास्तों के बीच में? आखिर में ऐसा क्या है 100? प्राथमिकता?
हेल्मेसो

update-alternativesडॉक्स पर एक नज़र डालें । मुझे लगता है कि वे मेरे द्वारा यहां संक्षेप में बताई गई बातों से बेहतर स्पष्टीकरण देंगे।
यान फोटो

5

Ubuntu 15.04 पर आप क्लैंग-एक्सएक्सएक्स पैकेज के साथ क्लैंग पैकेज भी स्थापित कर सकते हैं। फिर आप clang ++ टाइप कर सकते हैं और तदनुसार निष्पादन योग्य पाया जाना चाहिए।

sudo apt-get install clang

केवल नवीनतम संस्करण स्थापित करने के लिए "apt-get install clang" नहीं होगा, और फिर इसका उपयोग करें? यदि ओपी v3.5 स्थापित कर रहा है, तो वह नवीनतम का उपयोग नहीं करना चाहता है।
amfcosta

4

यान फोटो के जवाब में जोड़ना (और सिर्फ अगर आपका उद्देश्य एक उपयोग करने योग्य है, clangलेकिन जरूरी नहीं कि इसे इस्तेमाल किया जाए cc), तो आप वास्तव में एक ही बार में कार्यक्रमों के पूरे सेट को जोड़ सकते हैं।

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

(ध्यान दें कि प्रत्येक क्लैंग संस्करण के साथ आने वाले बायनेरिज़ का सेट भिन्न हो सकता है, उदाहरण के लिए 3.6 में clang-tblgen3.8, नहीं है।)

यदि आप इसे स्थापित किए गए हर संस्करण के लिए दोहराते हैं, तो आप केवल एक update-alternativesकमांड का उपयोग करके उनके बीच स्विच कर पाएंगे ।

(इस बीच, जाहिर है, अभी भी इस बारे में एक बहस चल रही है कि उबंटू पैकेजों के साथ इन लिंक को शामिल किया जाए या नहीं: https://bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493 )


0

अपने घर निर्देशिका में .bashrc फ़ाइल बनाएँ। इस कोड की लाइन टाइप करें।

उपनाम क्लैंग ++ = "क्लैंग ++ - 3.5"

अपना टर्मिनल बंद करें। इसे फिर से खोलें। फिर अपने कार्यक्रम को फिर से संकलित करने का प्रयास करें।

जब तक आप कमांड नहीं बता सकते हैं तब तक काम नहीं करेगा जब तक कि आप कमांड नाम "क्लैंग ++ - 3.5" में संस्करण नहीं देते। तो मैं सिर्फ मेरे .bashrc फ़ाइल में नाम का उपनाम देता हूं। इसलिए मुझे केवल "clang ++" लिखना है।

वैसे मैंने क्लैंग 3.5 को डाउनलोड किया है, इसलिए अपने संस्करण में पिछली सलाह को समायोजित करें।


0

यदि आपने सही तरीके से क्लैंग स्थापित किया है, तो प्रोग्राम के नाम के साथ संस्करण संख्या टाइप करने की परेशानी से बचाने के लिए एक और बहुत आसान तरीका है, ऑटो-पूर्ण सुविधा का उपयोग करना, उदाहरण के लिए (क्लैंग ++ - 3.5 स्थापित होना):

clang+[TAB][ENTER]

इसलिए आपको केवल टाइप clang+, हिट Tabऔर करना होगा Enter। निर्देशिकाओं, फ़ाइल नामों आदि के नामों के साथ उसी तरह काम करता है (यह आपकी मदद नहीं करेगा, हालांकि, यदि आपके पास प्रोग्राम के एक से अधिक संस्करण स्थापित हैं।)


0

यह क्लैंग- 4.0 के लिए अद्यतन-विकल्प सेट करना चाहिए यदि क्लैंग- 3.8 (उबंटू 16.04 पर) स्थापित है:

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

सहानुभूति के बारे में जोहान वेन्डिन के जवाब में जोड़ना। एक में रूट खोल आपके पास एक साथ विभिन्न बजना उपकरण लिंक कर सकते हैं:

जैसे

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

और फिर इसके लिए दोहराएं:

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

फिर सब कुछ जुड़ा होना चाहिए, न कि केवल एक छोटा सा चयन। (शायद मैं अभी भी कुछ भूल गया)।

यह सभी फाइलों को पैटर्न के अनुसार / usr / bin में ढूंढेगा, किसी भी अनुगामी संख्या (-8 या -9 या सम -10) को हटा देगा, और फिर प्रत्येक पर सहानुभूति पैदा करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.