dentang dan dentang ++ tidak ditemukan setelah menginstal paket dentang-3.5

26

Setelah menginstal clang-3.5paket, mengetik clangatau clang++pada baris perintah memberi saya pesan yang menyatakan paket mana program-program itu dapat ditemukan masuk. Mencoba untuk menjalankan instalasi clang-3.5lagi, apt menyatakan itu sudah diinstal dan pada versi terbaru.

Instalasi asli dilakukan dengan perintah:

sudo apt-get install clang-3.5 llvm

build-essential telah diinstal sebelumnya.

Adakah ide tentang apa yang mungkin terjadi?

Spatula
sumber

Jawaban:

30

Itu ada di sana, tapi masih disebut dentang-3.5.

Anda dapat menjalankannya sebagai clang-3.5(atau clang++-3.5) atau mengatur symlink seperti yang saya lakukan (menginstal dentang biasa tidak berfungsi):

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

Bekerja jelek, mungkin; tapi setidaknya itu berfungsi untuk saat ini :)

Johan Wendin
sumber
Untuk dentang-6.0, saya harus melakukan ini sebagai tambahan:ln -s /usr/bin/llc-6.0 /usr/bin/llc
forza azzurri
12

Cara yang tepat untuk menggunakan dentang sebagai default ccdan c++adalah dengan menggunakan update-alternatives:

Dimungkinkan untuk beberapa program yang memenuhi fungsi yang sama atau serupa untuk diinstal pada satu sistem pada saat yang sama. Sebagai contoh, banyak sistem memiliki beberapa editor teks diinstal sekaligus. Ini memberikan pilihan kepada pengguna sistem, memungkinkan masing-masing untuk menggunakan editor yang berbeda, jika diinginkan, tetapi menyulitkan suatu program untuk membuat pilihan editor yang baik untuk dipanggil jika pengguna belum menentukan preferensi tertentu.

jadi pertama-tama Anda perlu menambahkan clang-3.5atau clang++-3.5sebagai alternatif untuk eg gccdan 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

Jika suatu saat Anda perlu beralih kembali gccatau g++Anda dapat menggunakan --configopsi:

sudo update-alternatives --config c++
Yan Foto
sumber
Bisakah Anda menambahkan beberapa penjelasan tambahan tentang argumen? Mengapa cc/ c++di antara dua jalur? Apa itu 100pada akhirnya? Prioritas?
helmesjo
Lihatlah update-alternativesdokumen. Saya pikir mereka memiliki penjelasan yang lebih baik daripada apa pun yang saya rangkum di sini.
Yan Foto
5

Di Ubuntu 15.04 Anda juga dapat menginstal paket dentang di sepanjang paket dentang-xx. Anda kemudian dapat mengetikkan dentang ++ dan executable yang sesuai harus ditemukan.

sudo apt-get install clang
Tisch
sumber
Tidakkah "apt-get install clang" cukup menginstal versi terbaru, lalu menggunakannya? Jika OP sedang menginstal v3.5, ia tidak ingin menggunakan yang terbaru.
amfcosta
4

Menambahkan ke jawaban Yan Foto (dan kalau-kalau tujuan Anda adalah mendapatkan yang dapat digunakan clangtetapi tidak harus menggunakannya cc), Anda benar-benar dapat menambahkan seluruh rangkaian program dalam sekali pakai menggunakan

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

(Perhatikan bahwa himpunan binari yang datang dengan masing-masing versi dentang mungkin berbeda, misalnya 3.6 memiliki clang-tblgen, 3.8 tidak.)

Jika Anda mengulangi ini untuk setiap versi dentang yang Anda instal, Anda dapat beralih di antara mereka hanya menggunakan satu update-alternativesperintah.

(Sementara itu, tampaknya, masih ada perdebatan tentang apakah akan menyertakan tautan ini dengan paket Ubuntu atau tidak: https://bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493 )

Latanius
sumber
0

Buat file .bashrc di direktori home Anda. Ketikkan baris kode ini.

alias dentang ++ = "dentang ++ - 3.5"

Tutup terminal Anda. Buka lagi. Kemudian cobalah untuk mengkompilasi program Anda lagi.

Dari apa yang saya tahu dentang tidak akan berfungsi kecuali Anda menyatakan versi dalam nama perintah "dentang ++ - 3.5". Jadi saya hanya menyebutkan nama dalam file .bashrc saya. Jadi saya hanya perlu mengetik "dentang ++".

Ngomong-ngomong saya mengunduh clang 3.5, jadi sesuaikan saran sebelumnya ke versi Anda.

Digipen
sumber
0

Jika Anda memiliki dentang yang diinstal dengan benar, cara lain yang sangat mudah untuk menyelamatkan Anda dari kesulitan mengetik nomor versi bersama dengan nama program adalah dengan menggunakan fitur pelengkapan otomatis, misalnya (memiliki dentang ++ - 3.5 diinstal):

clang+[TAB][ENTER]

Jadi, Anda hanya perlu mengetik clang+, menekan, Tabdan Enter. Cara kerjanya sama dengan nama direktori, nama file, dll. (Ini tidak akan membantu Anda, jika Anda memiliki lebih dari satu versi program yang diinstal.)

menghina
sumber
0

Ini harus mengatur pembaruan-alternatif untuk clang- 4.0 jika clang- 3.8 (seperti pada Ubuntu 16.04) diinstal:

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
Bl00dh0und
sumber
0

Menambah jawaban Johann Wendin tentang symlinking. Di root-shell Anda dapat menautkan semua alat dentang sekaligus:

misalnya

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

dan kemudian ulangi untuk:

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

Maka semuanya harus dihubungkan, bukan hanya pilihan kecil. (Mungkin saya masih lupa sesuatu).

Ini akan menemukan semua file sesuai dengan pola di / usr / bin, menghapus angka trailing (-8 atau -9 atau bahkan -10), dan kemudian membuat symlink pada masing-masingnya.

CodeMonkey
sumber