Страница 2 из 6
Re: Clang
Добавлено: 02 апр 2013, 11:30
Olej
Olej писал(а):
Clang может линковаться со стандартной библиотекой из GCC (опция -stdlib=libstdc++) и с новой библиотекой C++ (опция -stdlib=libc++), которая делается в составе проекта Clang, и утверждается, что она лучше (чем GCC) уже на сейчас, а дальше будет всё лучше и лучше...
Вот домашняя страница этого проекта новой библиотеки -
"libc++" C++ Standard Library:
Why a new C++ Standard Library for C++11?
After its initial introduction, many people have asked "why start a new library instead of contributing to an existing library?" (like Apache's libstdcxx, GNU's libstdc++, STLport, etc). There are many contributing reasons, but some of the major ones are:
...
По поводу "new C++ Standard Library for C++11" см. здесь тему:
новый стандарт C++ - ISO/IEC 14882:2011.
Re: Clang
Добавлено: 02 апр 2013, 11:41
Olej
Olej писал(а):Много проясняет во "внутренней кухне"
GCC & Clang :
GCC был написан на C, использует собственный промежуточный язык GIMPLE для геренации кода, развивается фанатами оптимизирующих компиляторов; Apple была отстранена от участия в этом проекте трудами Р.М.С. в 2008-м году. Clang пишется на C++, использует LLVM для генерации кода и некоторых других вещей (кстати, LLVM также используют в графических драйверах в Mac OS X и Linux, а также в компиляторе CUDA от NVIDIA и компиляторах OpenCL). В clang никого не отстраняют от разработки, и многие контрибьюторы проекта на самом деле интересуются не компиляцией в стиле GCC, а другими вещами: интеграцией в среды разработки (XCode, QtCreator, плагин для vim), анализом невероятно огромной базы исходников (Google), компиляцией для GPU или DSP (тут перечислять слишком долго), автоматическим поиском ошибок (Apple, Google, Qualcomm и другие).
Кроме всего прочего, лицензии в рамках LLVM,
Clang и библиотеки libc++ -
гораздо приятнее , чем лицензия GPL - которая сама по себе вызывает недоумения и разные толкования уже многие годы ... с момента своего написания
.
Вот, например
"libc++" C++ Standard Library:
All of the code in libc++ is dual licensed under the MIT license and the UIUC License (a BSD-like license).
Вот так: MIT + BSD, каждая из которых предоставляет полную свободу использования.
Re: Clang
Добавлено: 02 апр 2013, 12:33
Виктория
Olej писал(а):
...
Но компиляция с libc++ сразу прерывается по включаемым файлам:
...
Можно детальнее посмотреть вывод диагностики
Clang по опции -v, и найти чего ему не хватает (каких include) ... например так:
Код: Выделить всё
bash-4.2$ make
clang++ -xc++ -stdlib=libc++ -I /usr/include/c++/4.7.2 -I /usr/include/c++/4.7.2/i686-redhat-linux hello.cc -o hellocc
/usr/bin/ld: cannot find -lc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
И детализация (-v) покажет:
Код: Выделить всё
bash-4.2$ make
clang++ -xc++ -v -stdlib=libc++ -I /usr/include/c++/4.7.2 -I /usr/include/c++/4.7.2/i686-redhat-linux hello.cc -o hellocc
...
/usr/bin/ld: cannot find -lc++
...
И это точно можно считать преимуществами
Clang? Развернутую детализацию?
Re: Clang
Добавлено: 02 апр 2013, 12:45
Olej
Виктория писал(а):И это точно можно считать преимуществами Clang? Развернутую детализацию?
У
Clang много преимуществ:
- скорость работы;
- большая и точная диагностика ошибок;
- переносимость (Linux, UNIX, MacOS, Windows ... MINIX 3
- дальше везде...);
- более точное соответствие новым стандартам С++ (2011г.);
- новая библиотека libc++;
- лицензии MIT / BSD - более демократичные и менее путанные, чем GPL;
... и, наверное, будут появляться ещё (преимущества), потому как проект (LLVM) очень стремительно развивается.
Похоже, что уже не вопрос, что
Clang достаточно скоро
повсеместно заменит GCC, который занимал это место лет ~30.
Re: Clang
Добавлено: 02 апр 2013, 15:01
Olej
Olej писал(а):
Много проясняет во "внутренней кухне"
GCC & Clang :
"Откуда ноги растут..."
Вот
интересно:
- львиная доля Apple ...
- которая монотонно уменьшается ...
- и постоянно увеличивающая доля 2-го по величине коммитера - Google.
Re: Clang
Добавлено: 02 апр 2013, 15:15
Olej
Olej писал(а):
- переносимость (Linux, UNIX, MacOS, Windows ... MINIX 3
- дальше везде...);
Вот совершенно отдельная страница относительно
Getting Started with the LLVM System using Microsoft Visual Studio (грех такую URL не зафиксировать
).
Это нужно обязательно попробовать!
Хотя здесь рассказывается, главным образом, как:
- собрать LLVM +
Clang в Windows, используя для сборки Visual Studio (>=2008) + некоторые другие инструменты Windows (CMake, Python, GnuWin32 - которые возможно придётся установить, ссылки там даются);
- установить LLVM +
Clang в системе;
- проверить
Clang на компиляции тестовых задач.
Интереснее дальнейшие шаги в том же направлении:
- назначить
Clang компилятором по умолчанию для IDE Visual Studio;
- научить его (Visual Studio) использовать новую библиотеку libc++;
- ... ну, и предварительно собрать ту же libc++ в Visual Studio используя
Clang;
Это была бы большая работа! ... в смысле её полезности.
Re: Clang
Добавлено: 02 апр 2013, 17:23
Olej
Olej писал(а):
Код: Выделить всё
bash-4.2$ yum list clang*
...
Доступные пакеты
clang.i686 3.0-14.fc17 updates
clang-analyzer.i686 3.0-14.fc17 updates
clang-devel.i686 3.0-14.fc17 updates
clang-doc.noarch 3.0-14.fc17 updates
Ох, что-то мне подсказывает, что нужно сносить нафиг все репозитарные пакеты RPM (и то же самое
в любом дистрибутиве Linux) и ставить всё это из исходников:
-
LLVM;
-
Clang;
-
libc++;
Главное здесь в том (что отличает эти проекты от всех других GNU и не-GNU
) - это очень бурная динамика развития этого проекта. Оно и не сильно удивительно, если его развитие так щедро финансирует такая пара орлов как Apple + Google
Есть все основания для того, чтобы отбросить пакетные и исталляции и поставить всё с оригиналов:
1.
http://llvm.org/ :
Dec 20, 2012: LLVM 3.2 is now available for download!
А Fedora 17 (и совсем не такой старый дистрибутив!) всё ещё вошкаются с 3.0.
2.
http://unixforum.org/index.php?showtopic=134455 :
clang 3.2 — нет никаких проблем.
Судя по логам clang немного неправильно понял заголовочные файлы GCC. Возможно потому, что atomic operations были добавлены в 3.1.
(это по поводу
ошибки с _GLIBCXX_ATOMIC_BUILTINS страницей обсуждения ранее)
Нужно проверить.
3. libc++ в Fedora 17
- где?
Re: Clang
Добавлено: 02 апр 2013, 17:32
Olej
Olej писал(а):3. libc++ в Fedora 17
- где?
Ну нет его там и близко!
:
Код: Выделить всё
bash-4.2$ yum list lib*c++*
...
Установленные пакеты
libsigc++20.i686 2.2.10-2.fc17 installed
libstdc++.i686 4.7.2-2.fc17 @updates
libstdc++-devel.i686 4.7.2-2.fc17 @updates
Доступные пакеты
libatf-c++.i686 0.16-1.fc17 updates
libatf-c++-devel.i686 0.16-1.fc17 updates
libftdi-c++.i686 0.19-3.fc17 fedora
libftdi-c++-devel.i686 0.19-3.fc17 fedora
libsigc++.i686 1.2.7-11.fc17 fedora
libsigc++-devel.i686 1.2.7-11.fc17 fedora
libsigc++-doc.noarch 1.2.7-11.fc17 fedora
libsigc++20-devel.i686 2.2.10-2.fc17 fedora
libsigc++20-doc.noarch 2.2.10-2.fc17 fedora
libstdc++-docs.i686 4.7.2-2.fc17 updates
libstdc++-static.i686 4.7.2-2.fc17 updates
Re: Clang
Добавлено: 02 апр 2013, 17:52
Виктория
Olej писал(а):Olej писал(а):
- переносимость (Linux, UNIX, MacOS, Windows ... MINIX 3
- дальше везде...);
Вот совершенно отдельная страница относительно
Getting Started with the LLVM System using Microsoft Visual Studio (грех такую URL не зафиксировать
).
Это нужно обязательно попробовать!
Хотя здесь рассказывается, главным образом, как:
- собрать LLVM +
Clang в Windows, используя для сборки Visual Studio (>=2008) + некоторые другие инструменты Windows (CMake, Python, GnuWin32 - которые возможно придётся установить, ссылки там даются);
- установить LLVM +
Clang в системе;
- проверить
Clang на компиляции тестовых задач.
Интереснее дальнейшие шаги в том же направлении:
- назначить
Clang компилятором по умолчанию для IDE Visual Studio;
- научить его (Visual Studio) использовать новую библиотеку libc++;
- ... ну, и предварительно собрать ту же libc++ в Visual Studio используя
Clang;
Это была бы большая работа! ... в смысле её полезности.
Реплика оппозиции:
Ben Simmonds. C++11 with Clang on Windows and MinGW
и на хабрахабре
http://habrahabr.ru/post/167281/
GnuWin32 - это уже не совсем идеальный эксперимент!
Re: Clang
Добавлено: 02 апр 2013, 18:08
Виктория
А мне попалось - Embarcadero тоже выбрало в качестве ориентиров
Clang-совместимость
в блоге и на самом сайте -
http://www.embarcadero.com/products/cbuilder