clang і clang ++ не знайдено після встановлення пакету clang-3.5


26

Після встановлення clang-3.5пакета введення clangабо clang++в командному рядку видає мені повідомлення про те, в яких пакетах можна знайти ці програми. Спроба запустити інсталяцію clang-3.5ще раз, apt заявляє, що вона вже встановлена ​​та в останній версії.

Початкова установка була виконана за допомогою команди:

sudo apt-get install clang-3.5 llvm

build-essential був встановлений раніше.

Будь-які ідеї щодо того, що може статися?

Відповіді:


30

Він є, але все ще називається clang-3.5.

Ви можете виконати його як clang-3.5(або clang++-3.5) або встановити на нього символьне посилання, як я (встановлення звичайного клангу не працювало):

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

Некрасива робота, можливо; але принаймні це працює зараз :)


Для clang-6.0 я повинен зробити це додатково:ln -s /usr/bin/llc-6.0 /usr/bin/llc
forza azzurri

12

Правильний спосіб використовувати clang як за замовчуванням ccі c++це використовувати update-alternatives:

У одній системі одночасно можна встановити кілька програм, що виконують однакові або подібні функції. Наприклад, у багатьох системах встановлено відразу кілька текстових редакторів. Це дає вибір користувачам системи, дозволяючи кожному користуватися іншим редактором, якщо це потрібно, але ускладнює програму зробити вдалий вибір редактора, якщо користувач не вказав певну перевагу.

тому спочатку вам потрібно додати clang-3.5або в clang++-3.5якості альтернативи , наприклад , gccі 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

Якщо в будь-який час вам потрібно перейти назад gccабо g++ви можете скористатися --configопцією:

sudo update-alternatives --config c++

Чи можете ви додати додаткове пояснення стосовно аргументів? Чому cc/ c++між двома стежками? Що це 100в підсумку? Пріоритет?
helmesjo

Погляньте на update-alternativesдокументи. Я думаю, що вони мають кращі пояснення, ніж все, що я б узагальнив тут.
Ян Фото

5

На Ubuntu 15.04 ви також можете встановити пакет clang вздовж пакету clang-xx. Потім ви можете ввести clang ++ і слід знайти відповідний виконуваний файл.

sudo apt-get install clang

Не вдалося б "apt-get install clang" просто встановити останню версію, а потім використовувати її? Якщо ОП встановлює v3.5, він не хоче використовувати найновіший.
amfcosta

4

Додавши до відповіді Ян Фото (і на всякий випадок, якщо ваша мета - отримати корисний, clangале необов’язково використовувати його як cc), ви можете фактично додати весь набір програм за один раз, використовуючи

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

(Зверніть увагу, що набір бінарних файлів, що постачаються з кожною версією кланг, може відрізнятися, наприклад, 3.6 має clang-tblgen, 3.8 - немає.)

Якщо ви повторите це для кожної інстальованої версії, ви зможете перемикатися між ними, використовуючи лише одну update-alternativesкоманду.

(Тим часом, мабуть, досі триває дискусія щодо того, включати ці посилання до пакетів Ubuntu чи ні: https://bugs.launchpad.net/ubuntu/+source/llvm-3.1/+bug/991493 )


0

Створіть .bashrc файл у своєму домашньому каталозі. Введіть цей рядок коду.

псевдонім clang ++ = "clang ++ - 3,5"

Закрийте свій термінал. Відкрийте його ще раз. Потім спробуйте скласти свою програму ще раз.

З того, що я можу сказати, кланг не буде працювати, якщо ви не вкажете версію в назві команди "clang ++ - 3.5". Тому я просто псевдонімував ім'я у своєму файлі .bashrc. Тому мені залишається лише набрати "clang ++".

До речі, я завантажив clang 3.5, тому підготуйте попередню пораду до вашої версії.


0

Якщо ви правильно встановили кланг, ще одним дуже простим способом позбавити вас від проблеми введення номера версії разом з назвою програми є використання функції автоматичного завершення, наприклад (з встановленим clang ++ - 3.5):

clang+[TAB][ENTER]

Тож вам залишається лише набрати clang+, вдарити Tabі Enter. Працює так само з іменами каталогів, іменами файлів і т. Д. (Однак це не допоможе вам, якщо у вас встановлена ​​кілька версій програми.)


0

Слід встановити альтернативи оновлення для clang- 4.0, якщо встановлено clang- 3.8 (як на Ubuntu 16.04):

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

0

Додавання відповіді Йогана Вендіна про симлінування. У кореневій оболонці ви можете зв’язати одразу всі різні інструменти кланг:

напр

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

а потім повторіть для:

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

Тоді має бути пов’язано все, а не лише невеликий вибір. (Можливо, я все-таки щось забув).

Це знайде всі файли відповідно до шаблону в / usr / bin, видалить будь-які кінцеві номери (-8 або -9 або навіть -10), а потім створить посилання на кожен.

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