Clang 5.0'ı yükleme ve C ++ 17 kullanma


17

Bir Ubuntu 16.04 makinesine clang 5.0 yüklemeye 3 gündür çalışıyorum. Çeşitli kılavuzları denedim , ancak hiçbir şey işe yaramıyor. Ben sadece SVN en son kapmak ve ( burada ayrıntılı olarak açıklandığı gibi ) inşa / yüklemek için çalıştığınızda, basit bir program derlemek için yol açar:

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

Daha sonra bina yapmadan önce -DGCC_INSTALL_PREFIXbayrağı ayarlamayı denedim cmake, ancak bu daha da iyi bir hataya yol açar:

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

İzlediğim adımlar (yukarıdaki kılavuzdan):

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

Birisi bana aptal gibi davranabilir ve clang 5.0'ın nasıl kurulacağını adım adım açıklayabilir mi? Yoksa beni, benim gibi temel aptalların bile takip edebileceği bir rehbere yönlendiriyor musun? Ayrıca C ++ 17 için libc ++ 'ı nasıl kuracağınızı ve kuracağınızı açıklayabilirseniz, sonsuza dek minettar olurum.

Güncelleme : Görünüşe göre clang'ı doğru şekilde kurmuyorum, çünkü bu clang ile ayrıntılı bir derlemenin çıktısı:

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

ve bu g ++ çıktısıdır:

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

Bu komutun çıktısı nedir:dpkg -l libstdc++-5-dev | tail -1
Ravexina

Eğer var mı build-essentialyüklü?
Ravexina

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

@Ravexina: evet, derleme temelli.
Steve D

Yanıtlar:


33

Clang-5'i llvm.org repositores'den yükleyin

İlk olarak, llvm.org depolarını kaynak listemize eklemeliyiz, eklememiz gereken satır:

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

Nano'yu açın ve yukarıdaki satırı bu dosyaya ekleyin:

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

Depo anahtarını ekleyin, aptindirilen paketleri doğrulayabilecektir.

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

Bundan sonra listelerinizi güncelleyin:

sudo apt-get update

Ardından clang-5'i yükleyin:

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

İşe yaramalı.

Bu yeni eklenen depodaki mevcut tüm paketlerin bir listesini almak istiyorsanız:

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

Size aşağıdaki gibi bir liste verecektir:

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

Daha sonra istediğinizi kurabilirsiniz.


Derleme probleminize yardımcı olabilir

Belirtilen başlık dosyası hatanızda yok: paketin stdarg.hbir parçası libstdc++-5-dev.

Makinemde bu paketi aldım, eğer çalıştırırsam:

aptitude why libstdc++-5-dev

Alacağım:

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)

Görünüşe göre build-essentialpaketin yüklenmesi bu hatanızı çözmeli, çünkü ne yaptığınızdan emin değilim.


Ben var build-essentialyüklü. Ama benim için çıktı aptitude why libstdc++-5-devsizinkiyle tamamen aynı, ancak yapı temelli bir hat yoktur.
Steve D

Emin değilim, ama eşyalarını parçası deposu gelen yüklü ve diğer kısmı elle yüklendiği için belki bunun @SteveD, belki vb kütüphaneler sürümünde bazı uyumsuzluk vardır
Ravexina

Soru gövdesini problemin ne olduğunu düşündüğümle güncelledim, belki nasıl düzelteceğinizi biliyor musunuz?
Steve D

@Çıktı benim gözümde çok yararlı değil, belki başkaları onları daha yararlı buluyor. neden depolardan yüklemiyorsun? Bence senin sorunun ortadan
kalkma

Havuzlarda mevcut olmayan clang 5.0'a ihtiyacım var.
Steve D
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.