Menginstal dentang 5.0 dan menggunakan C ++ 17

17

Saya telah mencoba selama 3 hari untuk menginstal clang 5.0 pada mesin Ubuntu 16.04. Saya telah mencoba berbagai panduan , tetapi sepertinya tidak ada yang berhasil. Ketika saya mencoba untuk mengambil yang terbaru dari SVN dan membangun / menginstal (seperti yang dijelaskan di sini ), mencoba untuk mengkompilasi program sederhana mengarah ke:

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

Saya kemudian mencoba mengatur -DGCC_INSTALL_PREFIXbendera cmakesebelum membangun, tetapi itu mengarah ke kesalahan yang lebih baik:

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

Langkah-langkah yang saya ikuti adalah (dari panduan di atas):

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

Bisakah seseorang memperlakukan saya seperti orang idiot dan menjelaskan langkah demi langkah cara menginstal clang 5.0? Atau arahkan saya ke panduan yang bahkan bisa diikuti oleh orang bodoh dasar seperti saya? Jika Anda juga bisa menjelaskan cara membangun dan menginstal libc ++ untuk C ++ 17, saya akan berterima kasih selamanya.

Pembaruan : Sepertinya saya tidak menginstal dentang dengan benar, karena ini adalah output dari kompilasi verbose dengan dentang:

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

dan ini adalah output untuk 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
...
Steve D
sumber
Apa output dari perintah ini:dpkg -l libstdc++-5-dev | tail -1
Ravexina
Apakah Anda sudah build-essentialmenginstal?
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: dan ya, build-essential diinstal.
Steve D

Jawaban:

33

Instal clang-5 dari repositori llvm.org

Pertama, kita harus menambahkan repositori llvm.org ke daftar sumber kita, baris yang harus kita tambahkan adalah:

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

Buka nano dan tambahkan baris di atas ke file ini:

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

Tambahkan kunci repositori, itu akan aptdapat memverifikasi paket yang diunduh.

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

Setelah itu, perbarui daftar Anda:

sudo apt-get update

Kemudian instal clang-5:

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

Itu harus bekerja.

Jika Anda ingin mendapatkan daftar semua paket yang tersedia dari repositori yang baru ditambahkan ini:

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

Ini akan memberi Anda daftar seperti:

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

Anda kemudian dapat menginstal apa pun dari mereka yang Anda inginkan.


Ini dapat membantu masalah kompilasi Anda

File header yang telah disebutkan tidak ada dalam kesalahan Anda: stdarg.hmerupakan bagian dari libstdc++-5-devpaket.

Saya punya paket ini di komputer saya, jadi jika saya menjalankan:

aptitude why libstdc++-5-dev

Saya akan mendapatkan:

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)

Jadi sepertinya bahwa menginstal build-essentialpaket seharusnya bisa mengatasi ini kesalahan Anda, menyebabkan saya tidak yakin apa yang Anda lakukan.

Ravexina
sumber
Saya telah build-essentialmenginstal Tapi output untuk saya aptitude why libstdc++-5-devpersis sama dengan milik Anda, kecuali tidak ada garis build-essential.
Steve D
@SteveD Saya tidak yakin, tapi mungkin itu karena bagian dari barang Anda diinstal dari repositori dan bagian lainnya diinstal secara manual, mungkin ada beberapa ketidakcocokan dalam versi perpustakaan dll.
Ravexina
Saya telah memperbarui tubuh pertanyaan dengan masalah yang menurut saya masalahnya, mungkin Anda tahu cara memperbaikinya?
Steve D
@SteveD output tidak begitu membantu di mata saya, mungkin orang lain menganggapnya lebih bermanfaat. mengapa Anda tidak menginstalnya dari repositori? Saya pikir ada kemungkinan besar masalah Anda akan hilang ..
Ravexina
Saya perlu dentang 5.0, yang tidak tersedia di repositori.
Steve D