Clang 5.0 स्थापित करना और C ++ 17 का उपयोग करना


17

मैं एक Ubuntu 16.04 मशीन पर क्लैंग 5.0 स्थापित करने के लिए 3 दिनों से कोशिश कर रहा हूं। मैंने विभिन्न गाइड की कोशिश की है , लेकिन कुछ भी काम नहीं करता है। जब मैं केवल SVN से नवीनतम हड़पने की कोशिश करता हूं और निर्माण / स्थापित करता हूं (जैसा कि यहां विस्तृत है ), एक साधारण प्रोग्राम को संकलित करने की कोशिश करता है:

> clang++ basic.cpp
/usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found
# include <stdarg.h>

मैंने तब निर्माण करने से पहले -DGCC_INSTALL_PREFIXध्वज को स्थापित करने की कोशिश की cmake, लेकिन इससे भी बेहतर त्रुटि होती है:

> clang++ basic.cpp
fatal error: 'iostream' file not found
#include <iostream>

मैं जिन चरणों का पालन कर रहा हूं वे (उपरोक्त गाइड से) हैं:

> cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ \
-G "Unix Makefiles" path/to/llvm
...
> make
...
> make check-clang
...
> make install-clang
...

क्या कोई मुझे बेवकूफ की तरह व्यवहार कर सकता है और चरण-दर-चरण समझा सकता है कि क्लैंग 5.0 कैसे स्थापित किया जाए? या मुझे एक गाइड की ओर इशारा करें जो मेरे जैसे बुनियादी मूर्ख भी अनुसरण कर सकते हैं? यदि आप यह भी समझा सकते हैं कि C ++ 17 के लिए libc ++ कैसे बनाया और स्थापित किया जाए, तो मैं सदा आभारी रहूंगा।

अपडेट : ऐसा लगता है कि मैं क्लैंग को सही तरीके से इंस्टॉल नहीं कर रहा हूं, क्योंकि यह क्लैब के साथ वर्बोज़ संकलन का आउटपुट है:

...
#include <...> search starts here:
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include

और यह जी ++ के लिए आउटपुट है:

#include <...> search starts here:
 /usr/include/c++/5
 /usr/include/x86_64-linux-gnu/c++/5
 /usr/include/c++/5/backward
 /usr/lib/gcc/x86_64-linux-gnu/5/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
...

इस कमांड का आउटपुट क्या है:dpkg -l libstdc++-5-dev | tail -1
रवेक्सिना

क्या आपने build-essentialस्थापित किया है?
रवेक्सिना

@ रेवेक्सिना:ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
स्टीव डी

@ रेवेक्सिना: और हां, बिल्ड-एसेंशियल इंस्टॉल किया गया है।
स्टीव डी।

जवाबों:


33

Llvm.org repositores से clang-5 स्थापित करें

सबसे पहले, हमें अपने स्रोतों की सूचियों में llvm.org रिपॉजिटरी को जोड़ना चाहिए, जिस लाइन को हमें जोड़ना चाहिए वह है:

deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main

नैनो खोलें और इस फ़ाइल में उपरोक्त पंक्ति जोड़ें:

sudo nano /etc/apt/sources.list.d/llvm.list

रिपॉजिटरी कुंजी जोड़ें, यह aptडाउनलोड किए गए पैकेजों को सत्यापित करने में सक्षम बनाएगा ।

 wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -

उसके बाद, अपनी सूचियों को अपडेट करें:

sudo apt-get update

फिर clang-5 स्थापित करें:

sudo apt-get install clang-5.0 lldb-5.0 lld-5.0

यह काम करना चाहिए।

यदि आप इस नए जोड़े गए भंडार से सभी उपलब्ध पैकेजों की सूची प्राप्त करना चाहते हैं:

grep -i package: /var/lib/apt/lists/apt.llvm* | cut -f3 -d: | sort | uniq

यह आपको एक सूची देगा जैसे:

clang-5.0 
clang-5.0-doc 
clang-5.0-examples 
libclang-common-5.0-dev
...

फिर आप उनमें से जो चाहें स्थापित कर सकते हैं।


यह आपकी संकलन समस्या में मदद कर सकता है

हेडर फ़ाइल जिसका उल्लेख किया गया है वह आपकी त्रुटि में मौजूद नहीं है: पैकेज stdarg.hका एक हिस्सा है libstdc++-5-dev

मुझे यह पैकेज मेरी मशीन पर मिला है, इसलिए अगर मैं चलाऊं:

aptitude why libstdc++-5-dev

मुझे मिलेगा:

i   build-essential Depends g++ (>= 4:5.2)                            
i A g++             Depends g++-5 (>= 5.3.1-3~)                       
i A g++-5           Depends libstdc++-5-dev (= 5.4.0-6ubuntu1~16.04.4)

तो ऐसा लगता है कि build-essentialपैकेज को स्थापित करने से आपकी यह त्रुटि हल हो जानी चाहिए , क्योंकि मुझे यकीन नहीं है कि आपने क्या किया है।


मैंने build-essentialस्थापित किया है। लेकिन मेरे लिए आउटपुट aptitude why libstdc++-5-devबिल्कुल आपके जैसा ही है, सिवाय इसके कि कोई बिल्ड-एसेंशियल लाइन नहीं है।
स्टीव डी

@SteveD मुझे यकीन नहीं है, लेकिन शायद ऐसा इसलिए है क्योंकि आपके सामान का एक हिस्सा रिपॉजिटरी से स्थापित किया गया है और दूसरा हिस्सा मैन्युअल रूप से स्थापित किया गया है, शायद पुस्तकालयों के संस्करण में कुछ बेमेल हैं आदि
रवेक्सिना

मैंने प्रश्न निकाय को अपडेट किया है जो मुझे लगता है कि समस्या है, शायद आप जानते हैं कि इसे कैसे ठीक किया जाए?
स्टीव डी।

@SteveD आउटपुट मेरी नजर में इतना मददगार नहीं है, हो सकता है कि कोई और उन्हें ज्यादा मददगार लगे। आप इसे रिपॉजिटरी से क्यों नहीं स्थापित करते? मुझे लगता है कि एक उच्च संभावना है कि आपकी समस्या दूर हो जाएगी ..
रवेक्सिना

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