Clang kali linux как пользоваться

Обновлено: 07.07.2024

clang даёт доступ к дереву синтаксического разбора. Эту фичу используют для создания статических анализаторов кода.

clang даёт доступ к дереву синтаксического разбора.

Насколько я знаю, нет.

Clang имеет модульную архитектуру - отдельно фронт-энд парсер, отдельно платформонезависимый оптимизатор, отдельно кодогенератор и платформозависимый оптимизатор. Таким образом очень легко как добавить поддержку новой архитектуры, так и поддержку нового языка программирования (самое известное, наверное, это rust, работающий на базе llvm). Ну и вообще модульная архитектура упрощает разработку и исправление багов. А ещё у clang более либеральная лицензия, чем у gcc, но кому-то это наоборот покажется минусом.

А gcc нет? Он же тоже кучу языков и архитектур умеет переваривать.

Но тем не менее gcc монолитен и добавление туда нового языка или архитектуры очень большая боль. А для clang есть даже официальные туториалы «как быстро сделать свой язык программирования с jit на базе llvm»

KivApple ★★★★★ ( 05.06.20 16:05:29 )
Последнее исправление: KivApple 05.06.20 16:06:18 (всего исправлений: 1)



А gcc нет? Он же тоже кучу языков и архитектур умеет переваривать.

Да, но нет. Проблема в том, что GCC не соблюдает принципы UNIX-Way, он монолитен. А вот Clang/LLVM соблюдает, поэтому его части можно использовать в IDE для подсветки, разбора. автодополнения и статического анализа кода. За счёт этих фич Clang и набрал популярность.

А как он тогда работает?


Сначала подумал, ну и что тут такого, подумаешь жирный if на пол-экрана, ведь все так пишут. But then…

Ладно, кажется я тут опять к терминологии придрался

Очень просто – компилирует исходный код в программу, не предоставляя за свои пределы каких-либо промежуточных результатов, за исключением ассемблерного листинга. А с помощью clan можно, указав «-Xclang -ast-dump», сдампить дерево разбора и использовать его для создания плагинов к IDE, например.


Проблема GCC в том, что у него нету (или в своё время не было) библиотеки подобной libclang, которую можно было бы цеплять к любой IDE и крутить разные полезные финты, попутно выкидывая из кодовой базы IDE стрёмные самописные парсеры C/C++, которые работали нормально только на «лёгком» коде.

Сейчас ситуация, когда практически все релевантные IDE для C и C++ либо используют libclang (KDevelop, Qt Creator), либо опционально предлагают из него различные плюшки (CLion). Остальные либо в процессе прехода на LSP, который использует libclang тоже, либо померли, либо собственные парсеры поддерживают крупные компании (Eclipse, Visual Studio, CLion).

EXL ★★★★★ ( 05.06.20 16:16:23 )
Последнее исправление: EXL 05.06.20 16:18:44 (всего исправлений: 1)

Очень просто – компилирует исходный код в программу, не предоставляя за свои пределы каких-либо промежуточных результатов, за исключением ассемблерного листинга.

SZT ★★★★★ ( 05.06.20 16:19:18 )
Последнее исправление: SZT 05.06.20 16:21:31 (всего исправлений: 1)


А ещё, помимо уже написанного, шланг умеет в reproducible build, в том числе между хостами (собираешь на линупсах и на шиндруз идентичные бинарники)

В общем, тут написал всё правильно написали.

Дополню только что gcc тоже предоставляет свой доступ к представлению, и у него есть система плагинов уже лет 5 как (но в качестве библиотеки его сложно было бы прикрутить), но использовать gcc очень сложно просто потому что у него беда с документацией, да и с удобством использования тоже.

С лицензиями - я хз была бы проблема если бы его использовали как подключаемую библиотеку.


Была бы. Всякие Сани, Яблы и Гуглы хотят, по крайней мере, проприетарные расширения

собираешь на линупсах и на шиндруз идентичные бинарники

Это как вообще возможно? Любое По зависит от системных библиотек, а они совсем разные будут. Ну и под Linux - ELF, под Windows что-то свое.



Здесь идентичные бинарники – бинарники у которых хешсумма будет одинакова вне зависимости от погодных условий (всяких там имён файлов, путей, хостов и прочего).

Эм. если я соберу целевой ELF из под linux и из под windows с помощью clang, то они отличаться не будут - это имеется в виду?


Да, но правда х.з. насколько это между хостами с разными OS справедливо, я никогда не занимался таким.


Вроде того. Кому-то делать нечего, а кто-то хочет использовать проприетарное на основе LLVM и поэтому пытается собрать с помощью Clang.


У меня нет идей, чем эта отладочная информация может быть полезна. Сравнение на примере вырожденного случая пустой программы:


Если ты посмотришь кто за него топит, то поймешь, главная фича, что это не богомерзкий GPL, посему основные сторонники Apple, BSD и пр

Она может быть полезна для анализа того, как компилятор переводит программу из одного абстрактного представления в другое, на каких стадиях и какие конкретно преобразования/оптимизации он выполняет.

Она может быть полезна для анализа того, как компилятор переводит программу из одного абстрактного представления в другое, на каких стадиях и какие конкретно преобразования/оптимизации он выполняет.

А она может отдать AST, чтобы можно было не пихать в cscope свой парсер C, а использовать результаты компиляции для навигации по коду?

А она может отдать AST, чтобы можно было не пихать в cscope свой парсер C, а использовать результаты компиляции для навигации по коду?

Не знаю, я над этим не задумывался. Ну наверное можно как-нибудь запатчить GCC, или парсить там что-то из диагностического выхлопа. Вообще-то это не задачи компилятора.

Да, GCC не задумывался таким модульным, в отличии от clang/LLVM. И что? Это еще совершенно не значит, что как компилятор он хуже. Вполне можно использовать какие-то кишки clang чтобы в IDE навигация работала, и тому подобное, но компилировать при этом через GCC, я в этом никакой проблемы не вижу.


Ну наверное можно как-нибудь запатчить GCC, или парсить там что-то из диагностического выхлопа.

Был уже такой проект, назывался gccxml. Но, к счастью, появился clang, и gccxml сдох.

Вообще-то это не задачи компилятора.

Тем не менее, это лучше всего реализуется именно в компиляторе. А если компилятор ещё и нормально разбит на компоненты (отдельный фронтенд, отдельный бэкенд), то это фактически ещё и бесплатно.

GCC не задумывался таким модульным

Ну то есть его не проектировали нормально, просто херак-херак на коленке, так?

Это еще совершенно не значит, что как компилятор он хуже.

Это значит, что сам GCC сложнее разрабатывать, а значит в нём больше вероятность багов. Что таки значит, что как компилятор он хуже.


Для меня – отсутствие необходимости иметь по сборке компилятора для каждой платформы.

a1batross ★★★★★ ( 05.06.20 18:09:40 )
Последнее исправление: a1batross 05.06.20 18:11:13 (всего исправлений: 1)


В том что bsd-like лицензия.


По практике сопровождения FreeBSD за 14 лет: Clang тормознее и жирнее GCC; Clang порождает менее оптимизированный код со своими странностями (глюками). GCC же простой как палка.

LLVM/Clang — это игрушка их создателей, «серебряная пуля», «универсальная модель компилятора», которая на практике представляет собой неповоротливую субстанцию, отвлекающую на себя довольно много человеческих ресурсов и внимания. Лично я предпочитаю инструменты, которые не замечаешь. LLVM/Clang/Rust — это сущее наказание.



Clang порождает менее оптимизированный код со своими странностями (глюками). GCC же простой как палка.

И тем не менее, это именно в gcc, начиная с как минимум 8 версии, есть тянущийся баг с кривыми дебаг-символами

Смеялись всем шреддером. У GCC славная история генерации очень стремного кода, иногда приводящего к багам.

kirk_johnson ★☆ ( 05.06.20 21:08:56 )
Последнее исправление: kirk_johnson 05.06.20 21:09:13 (всего исправлений: 1)

Не распарсил. Куда там смотреть?




помимо того, что уже по делу написали KivApple и EXL, двойная сборка (двумя компиляторами) служит для своего рода верификации кода на портабельность. чтобы он случайно не привязался на GCC-specific фичи и был более свободным.

crypt ★★★★★ ( 05.06.20 21:49:54 )
Последнее исправление: crypt 05.06.20 21:50:10 (всего исправлений: 1)

Сейчас не знаю, а раньше он запускал clangd, и очень медленно разбирал даже не очень большие проекты


Он запускает кланг в треде. Что ведёт к падению ИДЕ если падает парсер :)

Это про новые версии? Потому что в старых я не наблюдал падений из-за разбора проекта (только из-за плагина doxygen), а в последних да, при открытии проекта падает.

собственные парсеры поддерживают крупные компании Visual Studio

Intelli Sens или как его там, работает значительно медленнее, чем libclang, плюс есть ложное определение ошибок или не определение реальных ошибок. Это по наблюдениям на одном и том же cmake-проекте в QtCreator 4.12 и VS 2019


всего две. ты генту видел?


По практике сопровождения FreeBSD за 14 лет: Clang тормознее и жирнее GCC;

Clang порождает менее оптимизированный код со своими странностями (глюками). GCC же простой как палка.

а вот это тот случай, когда трава у соседа зеленее. я лично читал, как Линус посылал в детский сад (или обозвал ретардед, уже не помню) девелоперов GCC 6.3.

вот чем-чем, а простотой GCC никогда не славился. наоборот clang появился, потому что в GCC никто не мог разобраться.


и кстати, раскрой мне секрет. я зарепортил сегфолт в базовой системе, чувак, который отвечает за баг, сначала отписался, а потом даже не подветрдил, что данных для фикса достаточно. когда теперь ждать работы по этому багу? месяц, два, три, полгода, год? на убунту я ждал 6 лет и закрыли с wontfix.

crypt ★★★★★ ( 05.06.20 22:47:50 )
Последнее исправление: crypt 05.06.20 22:48:29 (всего исправлений: 1)

Тем не менее, это лучше всего реализуется именно в компиляторе.

А почему именно компиляторах? Может это лучше всего реализуется в статических анализаторах?

Ну то есть его не проектировали нормально, просто херак-херак на коленке, так?

Не знаю. Это ты уже у разработчиков GCC в мейл-листе можешь спросить, как его там проектировали. Может в то время это было не актуально, делать компиляторы модульными. Первый выпуск GCC был 22 марта 1987 года.

Это значит, что сам GCC сложнее разрабатывать, а значит в нём больше вероятность багов.

Что таки значит, что как компилятор он хуже.

Опять-таки, нет. Излишняя модульность тоже может быть проблемой и источником багов.

SZT ★★★★★ ( 05.06.20 23:51:56 )
Последнее исправление: SZT 05.06.20 23:53:37 (всего исправлений: 2)


Потому что жизнь становится гораздо проще, когда у тебя всего один эталонный парсер языка. Особенно если это язык типа C++.

Излишняя модульность тоже может быть проблемой и источником багов.

Нет, если у тебя корректно описаны интерфейсы и взаимодействие.

Потому что жизнь становится гораздо проще, когда у тебя всего один эталонный парсер языка. Особенно если это язык типа C++.

Ну вот не факт. Парсер должен соответствовать некоей спецификации, описанной в стандарте. Где гарантии, что эталонный парсер языка точно соответствует этой спецификации? И почему бы не иметь несколько разных эталонных парсеров, написанных разными людьми на основе одного текста стандарта, и сравнивать их на предмет одинаковости их поведения?

Нет, если у тебя корректно описаны интерфейсы и взаимодействие.

Может надо провести некий научный эксперимент, ну скажем взять две группы программистов одинаковой квалификации, одну группу попросить с нуля написать свой компилятор в модульном стиле, другую в монолитном, а потом сравнить количество багов и время разработки. И при этом такой эксперимент проделать несколько раз. Вот тогда можно сделать какие-то выводы. А так - это просто слова.

Я провёл последние несколько месяцев, работая с Clang, фронтендом LLVM. Clang умеет парсить и анализировать любой исходный код на языках семейства С (C, C++, ObjectiveC, и т.п. ) и имеет удивительную модульную структуру, которая делает его простым в использовании.


Если вы ищете статический анализатор кода, я настоятельно рекомендую Clang, он существенно превосходит другие статические анализаторы (такие, как CIL. ) и хорошо документирован. Также список рассылки Clang очень активен и полезен, если вы застряли на чём-то.

Лично я использую Clang для статического анализа драйверов ввода-вывода ядра Linux, включая драйвера камеры и драйвера DRM графической карты. Код ядра, особенно код драйвера, может быть очень сложным и трудным для анализа, но Clang позволяет нам легко поддерживать его. Давайте посмотрим, что можно сделать с его помощью.

Как работает Clang?

В большинстве случаев, Clang запустит препроцессор (который разворачивает все макросы) и парсит исходник, превращая его в абстрактное синтаксическое дерево (AST). C AST работать гораздо проще, чем с исходным кодом, но вы всегда можете получить ссылки на исходник. Фактически, каждая структура в Clang-е, используемая для представления кода (AST, CFG и т.п.), всегда имеет ссылку на оригинальный исходник, полезный для целей анализа, рефакторинга и т.п.

если вам нужно анализировать и модифицировать код на уровне исходника, Clang лучше, чем LLVM. Анализ с помощью LLVM означает, что вы можете использовать язык внутреннего представления LLVM, похожий на ассемблер.

Clang AST

Практически каждый компилятор и статический анализатор использует AST для представления исходного кода. AST, используемое в Clang, очень детализированное и сложное, но вы получите удовольствие, изучая различные классы элементов Clang AST. Ниже приводится краткое введение в Clang AST, но самый простой путь изучить его, это просто делать дампы AST для простых исходников, и смотреть, какое AST им соответствует.

В общем, Clang AST сделано из двух очень гибких классов: Decl и Stmt. У обоих есть множество подклассов, вот несколько примеров:

FunctionDecl — прототип или объявление функции
BinaryOperator — бинарный оператор, например (a + b)
CallExpr — вызов функции, например, foo(x);

Большинство классов имеют «говорящие» имена, например, ForStmt, IfStmt, и ReturnStmt. Вы поймёте суть AST, поиграв с ним несколько минут. Вы можете найти документацию по классам AST, поискав что-либо вроде “Clang FunctionDecl.”

Как использовать Clang?

Clang может использоваться как прямая замена gcc и предлагает несколько крутых инструментов статического анализа. Как программист (а не как нормальный пользователь!), вы можете получить доступ к всей мощи clang, используя его как библиотеку одним из трёх способов, в зависимости от того, как вы решите.

Для начала, ознакомьтесь с описанием интерфейсов clang. В дополнение к тому, что написано в этом описании, я выделю другие существенные различия между различными интерфейсами clang.

Clang Plugin

Ваш код является плагином, и запускается каждый раз заново для каждого файла исходника, что означает, что вы не можете сохранять глобальную информацию или другую контекстную информацию между двумя разными исходными файлами (но вы можете запустить плагин для множества файлов последовательно). Плагин запускается путём передачи соответствующих опций системе компиляции (Clang, Make и т.п.) через аргументы командной строки. Это похоже на то, как вы включаете оптимизацию в GCC (т.е. "-O1"). Вы не можете запустить какую-либо свою задачу до или после того, как исходный файл будет проанализирован.

LibTooling (Clang Tool)

Ваш код — обычная программа на С++, с нормальной функцией main(). LibTooling используется для запуска некоторого анализа на исходном коде (с множеством файлов, при желании) без запуска обычного процесса компиляции. Новый экземпляр кода для анализа (и новый AST) будет создан для каждого нового файла исходника (как и в случае Clang Plugin), но вы можете сохранять контекстную информацию между файлами исходников в своих глобальных переменных. Так как у вас есть функция main(), вы можете запускать какие-либо задачи перед или после того, как clang завершит анализ ваших исходных файлов.

LibClang

Примечание: LibClang не даёт полный доступ к AST (только высокоуровневый доступ), но другие два варианта дают. Как правило, нам нужен полный доступ к AST.

Если вы не можете решить, что использовать, я бы порекомендовал начать с интерфейса LibTooling. Он проще, и работает так, как вы ожидаете. Он предлагает гибкость и полный доступ к AST, как и Plugin, без потери глобального контекста между исходными файлами. LibTooling не сложнее в использовании, чем Plugin.

Начинаем работать с Clang

Сейчас, когда вы знаете основы, давайте начнём! Эта инструкция будет работать на любой версии Linux (и, возможно, OS X), но тестировалось на Ubuntu. Вы можете получить LLVM и Clang, проделав следующие шаги (взято из официальной инструкции к Clang):

/static_analysis/). Будем называть её директорией верхнего уровня. Выполните следующие команды в терминале:


Компиляция LLVM и Clang займёт некоторое время.

Для проверки запустите:


Можно протестировать Clang, запустив классический пример Hello World:


В этом руководстве я использую Clang 3.4 на Ubuntu 13.04, но вы можете использовать другие варианты и того, и другого.

10 вещей, которые нужно сделать после установки Kali Linux

Дистрибутивы Linux предоставляют широкие возможности кастомизации, и Kali Linux – не исключение. Всего несколькими командами можно автоматизировать задачи, установить любимый софт, создать дополнительных пользователей и оптимизировать взаимодействие с терминалом. Как сделать самое важное? Рассказываем.

Git – это open-source система контроля версий программного обеспечения для совместного использования и редактирования кода. Она позволит вам «клонировать» репозитории и не ограничивать свои пентестерские нужды встроенным функционалом Kali Linux.

Переносимся в терминал для установки git :

После установки всех зависимостей вы получите возможность скачивать репозитории командой git clone . Для этого скопируйте url нужного репозитория из адресной строки браузера или из интерфейса Github:

Теперь ссылка в буфере, вставьте её в терминал после команды:

Вы получите локальную копию репозитория и вывод со статистикой.

Используйте алиасы для часто вводимых команд. Для примера сократим команду besside-ng – сканера безопасности WEP сетей. Алиасы Bash хранятся в файле, их можно дополнить и обновить:

Файл пустой? Значит вы не пользовались алиасами до этого. Самое время! Введите строчку в открытый nano файл:

Закрывайте (Ctrl+x) и сохраняйте (y, Enter). Рассмотрим синтаксис: alias объявляет псевдоним hackwifi и указывает на команду в одинарных кавычках. Проверим в новом окне терминала:

Тем, кто выбрал Kali для знакомства с Linux, не помешают:

Вы ведь не собираетесь работать под рутом? Не подвергайте систему опасности – создайте обычного пользователя. Баги в пользовательских программах под рутом потенциально опасны для файловой системы, а в серверных программах они могут давать атакующему доступ к оболочке суперпользователя.

Поэтому создайте непривилегированного пользователя в новой Kali Linux и будьте спокойны:

Первая команда создаёт пользователя proglib , домашний каталог /home/proglib и одноимённую группу. Затем добавляет нового пользователя в группу sudo с доступом к руту. Вторая команда задаёт пароль пользователя.

Мультиплексор в данном случае – это плиточный эмулятор терминала, в котором можно открыть несколько сессий в одном окне. Главное преимущество – возможность видеть все ваши сессии одновременно, не перекрывающими друг друга.

терминальный мультиплексор

На скриншоте представлен Tilix – надёжный open-source эмулятор терминала. В качестве альтернатив можете попробовать tmux и screen.

Tilix доступен в репозиториях Kali Linux и устанавливается командой:

Некоторые версии Kali Linux ориентированы на минималистичных пентестеров, которые предпочитают обходиться без тысячи предустановленных инструментов. В этом случае придётся устанавливать любимые инструменты вручную. Типы инструментов каждого пентестера зависят от его умений и области знаний.

Kali Metapackages дают возможность устанавливать отдельные категории инструментов Kali Linux и смотреть состав метапакетов.

Описание и размер желаемого метапакета перед установкой. Вот как установить все инструменты Kali Linux, которых нет даже в полных образах:

Внимание! Это займёт 15 Гб, устанавливайте метапакеты исходя из ваших нужд.

Качайте софт для анонимности из оригинальных источников. Версия Tor в репозиториях Kali Linux не всегда вовремя обслуживается и обновляется. Это означает, что у вас не будет критических обновлений стабильности и безопасности.

Поэтому добавьте репозитории Tor Project из источников самого проекта:

Затем скачайте ключ подписи пакета Tor Project и импортируйте в систему:

OK в выводе свидетельствует об удачном добавлении ключа в систему. После чего следует обновиться:

И установить Tor:

Syncthing – это кроссплатформенная, приватная, лёгкая альтернатива проприетарным облачным хранилищам. Передача кейлогов, скриншотов, записей веб-камер и другой «добычи» между виртуальными серверами и локальными машинами Kali может оказаться, в лучшем случае, разочарованием для пентестера. Syncthing делает безопасную передачу файлов абсолютно безболезненной.

Начните с установки зависимостей:

Затем скачайте и установите ключи:

Ключи gpg нужны системе для проверки подписи источника при установке пакетов. Благодаря подписям обеспечивается целостность пакетов, которая может быть нарушена вследствие изменения оригинального пакета или перехвата трафика.

Осталось добавить репозиторий проекта в список источников уже знакомым вам способом:

Запускайте командой syncthing .

Atom – это бесплатный, навороченный и кастомизируемый текстовый редактор с возможностями совместного использования кода в реальном времени, интуитивного автозавершения и установки пакетов для расширения функциональности. В качестве альтернатив можете попробовать Geany и Gedit.

Для установки Atom в Kali Linux скачайте deb-пакет. Затем установите зависимости:

Наконец, используйте dpkg , пакетный менеджер командной строки, с флагом установки -i :

После этого Atom будет доступен из меню приложений.

atom

OpenVAS – это свободный сканер уязвимостей, который расширит ваш инструментарий. Фреймворк запускался под именем GNessUs, бесплатного форка Nessus, который сейчас стоит денег :)

Для бесплатной утилиты, OpenVAS хорошо справляется с оценкой безопасности узлов сети. Конечно, платный софт типа Nessus и NeXpose более функционален, и стоит он от $2,190.00 в год в случае с Nessus.

OpenVAS дает начинающим отличные возможности для понимания работы сканеров уязвимостей.


Хотя большинство разработчиков Ubuntu придерживаются GCC, они также позволяют начать работу с компилятором Clang. Если вы хотите, чтобы Clang работал над Ubuntu, это руководство для вас! Мы покажем вам, как заставить Clang 9, Clang 11 и Clang 12 работать в Ubuntu.

Как установить Clang 9 на Ubuntu

Если вам нужно заставить Clang 9 работать с Ubuntu, вы будете рады узнать, что в большинстве выпусков Ubuntu, даже в последней версии Ubuntu 21.04, он есть в репозитории программного обеспечения. Чтобы начать работу с Clang 9, начните с открытия окна терминала.


Чтобы открыть окно терминала на рабочем столе Ubuntu, нажмите Ctrl + Alt + T на клавиатуре. Когда он откроется, используйте команду apt install ниже, чтобы установить пакет Clang 9. Обязательно используйте параметр командной строки –install-sizes, так как он скажет Ubuntu получить все необходимое для использования Clang 9.

После ввода этой команды в окне терминала Ubuntu предложит вам ввести пароль. Сделай так. Когда вы это сделаете, он соберет все предложенные пакеты для установки на ваш компьютер.

Проверь это - Как установить и обновить Flash на вашем Mac

После того, как Ubuntu соберет все пакеты для установки, вам будет предложено нажать клавишу Y на клавиатуре. Нажмите клавишу Y на клавиатуре, чтобы подтвердить, что вы хотите продолжить установку.

После нажатия Y Ubuntu установит Clang 9 в вашу систему. Когда закончите, закройте окно терминала или начните использовать Clang 9 в командной строке.

Как установить Clang 11 на Ubuntu

По одной причине в Ubuntu нет Clang 10, но есть Clang 11, что лучше, поскольку это более новая версия. Если вам нужен Clang 11 в вашей системе Ubuntu, начните с открытия окна терминала.


Чтобы открыть окно терминала на рабочем столе Ubuntu, нажмите Ctrl + Alt + T на клавиатуре. Или найдите «Терминал» в меню приложения. Когда он откроется, используйте команду apt install и параметр командной строки –install-sizes, чтобы настроить Clang 11 вместе с пакетами, предлагаемыми Ubuntu.

После ввода приведенной выше команды Ubuntu предложит вам ввести пароль для продолжения. Используя клавиатуру, введите пароль своей учетной записи. Затем нажмите клавишу Enter на клавиатуре, чтобы продолжить.

Проверь это - Как настроить панель управления Linux-сервера с помощью Linux Dash

После продолжения Ubuntu соберет все предложенные пакеты и подготовит их к установке. После этого вам будет предложено нажать кнопку Y, чтобы продолжить. Используя клавишу Y на клавиатуре, подтвердите, что хотите продолжить установку, и Ubuntu установит Clang 11.

Когда установка будет завершена, Clang 11 будет на вашем ПК с Ubuntu. Отсюда вы можете закрыть терминал или начать использовать Clang 11.

Как установить Clang 12 на Ubuntu

Помимо Clang 9 и Clang 11, в Ubuntu также доступен Clang 12, который пользователи могут установить, если им это нужно. Если вы хотите установить Clang 12 на свой компьютер с Ubuntu, начните с открытия окна терминала. Чтобы открыть окно терминала в Ubuntu, нажмите Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре.


Когда окно терминала открыто и готово к использованию, введите команду apt install и установите пакет clang-12 вместе с параметром командной строки –install-sizes, который захватывает все предложенные пакеты.

После ввода приведенной выше команды для установки Clang 12 Ubuntu предложит вам ввести пароль. Для команд sudo требуются пароли. Используя клавиатуру, введите пароль своей учетной записи и нажмите клавишу Enter.

Проверь это - Как включить многопроцессорность в Firefox прямо сейчас

Когда вы вводите пароль в командной строке и нажимаете клавишу Enter, Ubuntu соберет все пакеты, которые нужны Clang 12. Оттуда он попросит вас нажать клавишу Y. Сделай так.

Ubuntu начнет загрузку и установку всех пакетов Clang 12 на ваш компьютер после нажатия клавиши Y. Это займет всего пару секунд. Когда процесс будет завершен, закройте окно терминала или оставьте его открытым и используйте Clang 12.

Другие пакеты Clang

Кроме того, не забудьте также проверить официальный поиск пакетов Ubuntu . Это веб-сайт, посвященный всем пакетам Ubuntu во всех дистрибутивах. Вы сможете использовать его для поиска любого необходимого пакета Clang!

Читайте также: