Встановлення clang 5.0 та використання C ++ 17


17

Я вже 3 дні намагаюся встановити clang 5.0 на машині Ubuntu 16.04. Я спробував різні путівники , але, здається, нічого не виходить. Коли я намагаюся просто захопити останню версію з 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
...

Чи може хтось ставитися до мене як до ідіотця і пояснювати покроково, як встановити clang 5.0? Або вкажіть мені на путівник, що навіть базові дурні, як я, можуть наслідувати? Якщо ви також можете пояснити, як створити та встановити libc ++ для C ++ 17, я буду вічно вдячний.

Оновлення : Схоже, я не встановив кланг правильно, оскільки це результат випуску комбінованої версії з clang:

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

і це вихід для g ++:

#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
Ravexina

Ви build-essentialвстановили?
Ravexina

@Ravexina:ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
Стів D

@Ravexina: і так, встановлюється істотна збірка.
Стів D

Відповіді:


33

Встановіть clang-5 з репозиторіїв llvm.org

По-перше, ми повинні додати сховища 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точно такий же, як і для вашого, за винятком того, що немає суттєвої лінії побудови.
Стів D

@SteveD Я не впевнений, але, можливо, це тому, що частина ваших речей встановлюється з сховища, а інша частина встановлюється вручну, можливо, є деякі невідповідності у версії бібліотек тощо.
Ravexina

Я оновив тіло запитань на те, що, на мою думку, є проблемою, можливо, ви знаєте, як її виправити?
Стів D

@SteveD вихід не дуже корисний для моїх очей, можливо, хтось ще вважає їх кориснішими. чому б не встановити його з сховищ? Я думаю, є велика ймовірність, що ваша проблема піде.
Ravexina

Мені потрібен clang 5.0, який недоступний у сховищах.
Стів Д
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.