2011-12-29 2 views
15

В моей версии Mac OSX (Lion 10.7.1, XCode 4.1) есть LLVM 3.0svn и Clang 2.1. current versions LLVM 3.0 и Clang 3.0.Как обновить LLVM & Clang на Mac OSX?

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

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

Знаете ли вы о возможных проблемах installing Clang manually?

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

+2

также отмечают, что Apple использует собственное управление версиями для llvm/clang. Итак, Apple LLVM 3.0/clang 3.0 отличается от LLVM 3.0 llvm.org :) Последние являются более свежими. –

ответ

8

Поставщики программного обеспечения традиционно консервативны в отношении обновления инструментов сборки и не без оснований. Если вы хотите использовать новейшие общедоступные версии инструментов сборки, поставляемые и модифицированные Apple, вы должны придерживаться тех, которые содержатся в последней версии Xcode для выпуска операционной системы OS X. Как правило, есть веские причины, по которым Apple еще не обновилась до новейших версий компонентов с открытым исходным кодом, таких как серьезные ошибки. Если вам не нужны модификации, поставляемые Apple, и имейте в виду не жить на грани, то есть не поддерживать Apple и, возможно, (повторно) обнаруживать известные проблемы, и не планируете отправлять скомпилированные файлы в системы других людей, вы может установить свои собственные версии, например, /usr/local/bin или с помощью сторонних менеджеров пакетов, таких как MacPorts http://www.macports.org/ports.php?by=name&substr=clang). Вы должны обязательно не попытаться заменить файлы по путям, установленным Xcode. Стоит ли оно того? Только вы можете это решить.

+0

Обновление: Текущий Xcode 4.3.3 для OS X 10.7 имеет более новую версию 'clang':' Apple clang version 3.1 (теги/Apple/clang-318.0.61) (на основе LLVM 3.1svn) '. –

+2

Нумерация версий от Apple не соответствует clang's. Apple clang 3.1 построена на базе источника до clang 3.1. В нем отсутствуют некоторые функции C++ 11, такие как списки инициализаторов. Они также натолкнули версию на 4.0 в 4.4DP, но она по-прежнему характеризуется уровнем 3.1 по уровню. –

+0

Это FUD, стабильные релизы clang довольно стабильны, а другие операционные системы, такие как FreeBSD, отслеживают последнюю версию – jupp0r

8

Сайт неверный. Xcode 4.2.1 и 4.2 включают в себя LLVM 3.0 и лязг 3.0:

лязг --version
Apple, версия 3.0 (лязг теги/Apple/лязг-211,12) (на основе LLVM 3.0svn)

лязг ++ --version
Apple, лязг версия 3.0 (теги/Apple/лязг-211,12) (на основе LLVM 3.0svn)

LLVM-г ++ --version
i686-яблочно-darwin11-LLVM-г ++ - 4,2 (НКУ) 4.2.1 (Основано на сборке Apple Inc. 5658) (LLVM build 2336.1.00)

LLVM-GCC --version
i686-яблочно-darwin11-LLVM-GCC-4.2 (GCC) 4.2.1 (на основе Apple Inc. построить 5658) (LLVM построить 2336.1.00)

+0

Я нахожусь в Xcode 4.4.1, и я все еще вижу: «Apple clang version 2.1 (теги/Apple/clang-163.7.1) (на основе LLVM 3.0svn) Цель: x86_64-apple-darwin11.4.0 Модель темы : posix' –

+0

Я нахожусь в той же версии Xcode, но clang --version reports: Apple clang version 4.0 (теги/Apple/clang-421.0.60) (на основе LLVM 3.1svn) Цель: x86_64-apple-darwin12. 1.0 Модель темы: posix. Возможно, у вас установлена ​​более старая версия Xcode рядом с 4.4.1? Также проверьте вкладку «Загрузки» в настройках Xcode, чтобы узнать, установлен ли компонент командной строки. –

+0

@JamesMcKinney Вам может потребоваться запустить xcode-select в командной строке, чтобы указать вашу систему на версию clang, установленную с установленной вами версией Xcode. – leecbaker

2

На Mountain Lion 10.8.2 с XCode 4.6, версии являются:

$ clang --version 
Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn) 
Target: x86_64-apple-darwin12.2.0 
Thread model: posix 

$ clang++ --version 
Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn) 
Target: x86_64-apple-darwin12.2.0 
Thread model: posix 

$ llvm-g++ --version 
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) 
Copyright (C) 2007 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

$ llvm-gcc --version 
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) 
Copyright (C) 2007 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

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

+0

Как и ожидалось, после выхода OSX 10.8.3 Xcode 4.6.1, который содержит clang-425.0.27 –

1

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

$ clang --version 
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin13.1.0 
Thread model: posix 

На мой Mac LLVM-GCC и LLVM-г ++ являются символическими ссылками на этот лязг:

lrwxr-xr-x 1 root wheel  5B 25 Oct 16:48 /usr/bin/llvm-gcc -> clang 
lrwxr-xr-x 1 root wheel  7B 25 Oct 16:48 /usr/bin/llvm-g++ -> clang++ 

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

6

Вы можете легко создать свой собственный LLVM с помощью homebrew:

brew install llvm 

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

+0

, это больше не работает, так как этот кран теперь пуст. '$ brew tap homebrew/versions' возвращает« Warning: homebrew/versions был устарел. Этот tap теперь пуст, поскольку все его формулы были перенесены ». Есть ли способ сделать это сейчас? –

+1

Да, он все еще работает, я обновил ответ. – jupp0r

Смежные вопросы