Как обновить clang mac os

Обновлено: 06.07.2024

В моей версии Mac OSX (Lion 10.7.1, XCode 4.1) есть LLVM 3.0svn и Clang 2.1. текущие версии - это LLVM 3.0 и Clang 3.0.

С веб-сайта XCode кажется, что последняя версия (4.2.1) по-прежнему использует LLVM 2.0, и это кажется ошибкой.

Вы знаете, что при установке последней версии XCode я получу более свежую версию LLVM / Clang?

Знаете ли вы о возможных проблемах при установке Clang вручную?

После установки будет ли новый Clang использоваться автоматически всеми имеющимися у меня IDE (например, NetBeans)?

Я настоятельно не рекомендую заменять системный компилятор на macOS:

Многие процессы сборки, которые вы увидите (например, Xcode), зависят от расширений Apple. Например, в последний раз я проверял, что у Apple есть собственный компоновщик.

Кроме того, Linux не обеспечивает бинарной совместимости - как правило, люди создают программное обеспечение из исходного кода или загружают определенные бинарные файлы для каждой версии операционной системы. Как конечный пользователь (в отличие от разработчика / профессионального пользователя) операционная система macOS прилагает большие усилия для обеспечения совместимости с двоичными файлами, созданными на более старых версиях macOS.

Замена компилятора или, что еще хуже, системных библиотек нарушит эти гарантии совместимости. Это также может нарушить вашу систему незаметным, неочевидным образом.

Но не стесняйтесь устанавливать вторую копию clang в /usr/local или около того и исследовать новые функции, но не трогайте системный компилятор.

Также обратите внимание, что Apple не поддерживает отправку программного обеспечения в магазины приложений, которые не созданы с использованием Xcode и компилятора, который он включает. Хотя вы можете остаться незамеченным, если сделаете это, вы можете получить отказ во время проверки в магазине приложений, если ваш компилятор не сможет сделать что-либо, что делает компилятор Apple.

Обновление OS X версии 10.9.2 переносит XCode до версии 5.1 (5B130a) и включает последнюю стабильную версию (для OS X):

На моем Mac llvm-gcc и llvm-g ++ являются символическими ссылками на этот clang:

Моя последняя установка R настроена на использование llvm-gcc-4.2, что может вызвать ошибку при построении SHLIB. Создание символических ссылок для llvm-gcc-4.2 и llvm-g ++ - 4.2 таким же образом, вместо замены LLVM или CLANG , достаточно для устранения ошибок.

В Mountain Lion 10.8.2 с XCode 4.6 есть следующие версии:

Вы также можете обновить XCode для Lion из App Store или прямой загрузки учетной записи разработчика Apple и установить инструменты командной строки, которые обновят clang & llvm до вышеуказанных версий.

Вы можете легко создать свой собственный LLVM, используя homebrew:

Также существуют пакеты с версией на случай, если вам нужна конкретная версия:

  • llvm@3.7
  • llvm@3.8
  • llvm@3.9
  • llvm @ 4

Веб-сайт неверен. Xcode 4.2.1 и 4.2 включают LLVM 3.0 и clang 3.0:

clang --version
Apple clang версии 3.0 (теги / Apple / clang-211.12) (на основе LLVM 3.0svn)

clang ++ --version
Apple clang версии 3.0 (теги / Apple / clang-211.12) (на основе LLVM 3.0svn)

llvm-g ++ - версия
i686-apple-darwin11-llvm-g ++ - 4.2 (GCC) 4.2.1 (на основе сборки 5658 Apple Inc.) (сборка LLVM 2336.1.00)

llvm-gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (на основе сборки 5658 Apple Inc.) (сборка LLVM 2336.1.00)

в моей версии Mac OSX (Lion 10.7.1, XCode 4.1) есть LLVM 3.0 svn и Clang 2.1. The текущие версии являются LLVM 3.0 и Clang 3.0.

с веб-сайт XCode, похоже, что последняя версия (4.2.1) по-прежнему использует LLVM 2.0, и это кажется ошибкой.

знаете ли вы, что при установке последнего XCode я получу более свежую версию LLVM/Clang?

знаете ли вы о каких-либо возможных проблемах установка Лязг вручную?

после установки новый Clang будет автоматически использоваться всеми IDE, которые у меня есть (например, NetBeans)?

веб-сайт неверен. Xcode 4.2.1 и 4.2 включают LLVM 3.0 и clang 3.0:

clang --version
Apple clang версии 3.0 (Теги/Apple/clang-211.12) (на основе LLVM 3.0 svn)

clang++ --version
Apple clang версии 3.0 (Теги/Apple/clang-211.12) (на основе LLVM 3.0 svn)

llvm-g++ --version
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (на основе Apple Inc. build 5658) (LLVM build 2336.1.00)

llvm-gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (на основе Apple Inc. build 5658) (LLVM build 2336.1.00)

вы можете удобно построить свой собственный LLVM с помощью доморощенного:

есть также версионные пакеты, Если вам нужна конкретная версия:

  • llvm@3.7
  • llvm@3.8
  • llvm@3.9
  • LLVM с@4

на Mountain Lion 10.8.2 с XCode 4.6 версии:

вы также можете обновить XCode для Lion из App Store или Apple Developer Account direct download и установить инструменты командной строки, которые обновят clang & llvm до вышеуказанных версий.

OS X Update version 10.9.2 приносит XCode до версии 5.1 (5B130a) и лязгает до последней стабильной (для OS X):

на моем Mac llvm-gcc и llvm-G++ являются символическими ссылками на этот clang:

моя последняя установка R настроена на использование llvm-gcc-4.2, что приведет к ошибке при построении SHLIB. создание символических ссылок для llvm-gcc-4.2 и llvm-g++-4.2 таким же образом,вместо замены LLVM или CLANG, достаточно, чтобы решить ошибки.

Я провёл последние несколько месяцев, работая с 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, но вы можете использовать другие варианты и того, и другого.

Обновление macOS до последней версии

Самой свежей на момент написания настоящей статьи является macOS Mojave 10.14.3, выпущенная в октябре 2018 г. Из заметных новшеств этот релиз принёс долгожданную тёмную тему оформления, более глубокую интеграцию ассистента Siri, средство систематизации файлов «Стеки», а также улучшенный инструментарий для снятия скриншотов. Общие системные требования для установки этого обновления выглядят так:

  • OS X 10.8 или новее;
  • 2 Гб оперативной памяти;
  • 12,5 Гб свободного пространства на диске;

Обратите внимание, что Мохаве получится установить не на все устройства Apple – убедитесь, что ваше соответствует списку далее.

  • MacBook выпуска 2015 г. или позже;
  • MacBook Air выпуска 2012 г. или позже;
  • MacBook Pro выпуска 2012 г. или позже;
  • Mac mini выпуска 2012 г. или позже;
  • iMac выпуска 2012 г. или позже;
  • iMac Pro;
  • Mac Pro выпуска 2013 г., 2010 г. и 2012 г. с видеокартой, поддерживающей технологию Metal.

Процедура обновления до macOS Mojave

Перед тем как перейти к обновлению, рекомендуем сделать резервную копию посредством Time Machine: во-первых, это поможет вернуть функциональность компьютеру в случае проблем с апдейтом; во-вторых, обезопасит важные данные; в-третьих, позволит откатиться, если обновление вас не устроит.

  1. Откройте меню Apple и выберите «Системные настройки».

Открыть системные настройки для создания бэкапа перед обновлением macOS до последней версии

Вызвать Time Machine для создания бэкапа перед обновлением macOS до последней версии

Выбрать диск для создания бэкапа перед обновлением macOS до последней версии

Настроить параметры создания бэкапа перед обновлением macOS до последней версии

Теперь можно приступать к обновлению.

    Откройте Mac AppStore из панели Dock.

Вызвать AppStore для загрузки обновлений macOS до последней версии

Открыть страницу инсталлятора в AppStore для загрузки обновлений macOS до последней версии

Обратите внимание! Инсталлятор имеет размер около 6 Гб, поэтому процесс загрузки может занять длительное время!

Открыть программы для начала установки обновлений macOS до последней версии

Запустить инсталлятор для обновления macOS до последней версии

Принять соглашения для обновления macOS до последней версии

Выбрать диск для обновления macOS до последней версии

Готово – ваше устройство Apple обновлено до новейшией версии операционной системы.

Возможные проблемы и их решения

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

Инсталлятор Mojave загружается слишком долго
В первую очередь проблема заключается в недостаточно быстром соединении с интернетом. Также зависать загрузка может при обрыве связи или проблемах с серверами Эппл. Последнее можно проверить по следующей ссылке.

Также есть резон использовать проводное соединение, а не Wi-Fi – просто подключите ваш компьютер к роутеру или вставьте кабель интернета в соответствующий разъём.

Инсталлятор выдаёт ошибку «macOS could not be installed on your computer»
Если инсталлятор новейшей макОС сообщает, что не может установить обновление, проделайте следующее:

  1. Закройте установщик сочетанием клавиш Command+Q.
  2. Проверьте, хватает ли на жестком диске/SSD свободного места: напоминаем, что для macOS Mojave нужно не менее 12,5 Гб пространства. Также не помешает проверить состояние накопителя посредством «Дисковой утилиты».

Optsii-pervoj-pomoshhi-v-diskovoj-utilite-na-macOS

Установка прошла некорректно, компьютер не загружает систему
Если на последнем этапе инсталляции что-то пошло не так, и компьютер не может загрузиться в систему, зайдите в режим восстановления и восстановитесь из резервной копии либо переустановите ОС.

Заключение

Установка последней версии macOS представляет собой простую задачу, но при условии соответствия аппаратных характеристик устройства системным требованиям для апдейта.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

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