Clang

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 11:30

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.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 11:41

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

Аватара пользователя
Виктория
Писатель
Сообщения: 113
Зарегистрирован: 28 дек 2012, 14:05
Откуда: Самара
Контактная информация:

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? Развернутую детализацию?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 12:45

Виктория писал(а):И это точно можно считать преимуществами Clang? Развернутую детализацию?
У Clang много преимуществ:
- скорость работы;
- большая и точная диагностика ошибок;
- переносимость (Linux, UNIX, MacOS, Windows ... MINIX 3 ;-) - дальше везде...);
- более точное соответствие новым стандартам С++ (2011г.);
- новая библиотека libc++;
- лицензии MIT / BSD - более демократичные и менее путанные, чем GPL;

... и, наверное, будут появляться ещё (преимущества), потому как проект (LLVM) очень стремительно развивается.

Похоже, что уже не вопрос, что Clang достаточно скоро повсеместно заменит GCC, который занимал это место лет ~30.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 15:01

Olej писал(а): Много проясняет во "внутренней кухне" GCC & Clang :
"Откуда ноги растут..." :lol:

Вот интересно:
Изображение
Изображение
Изображение

- львиная доля Apple ...
- которая монотонно уменьшается ...
- и постоянно увеличивающая доля 2-го по величине коммитера - Google.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 15:15

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;

Это была бы большая работа! ... в смысле её полезности.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 17:23

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 :-o - где?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Clang

Непрочитанное сообщение Olej » 02 апр 2013, 17:32

Olej писал(а):3. libc++ в Fedora 17 :-o - где?
Ну нет его там и близко! :-( :

Код: Выделить всё

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  

Аватара пользователя
Виктория
Писатель
Сообщения: 113
Зарегистрирован: 28 дек 2012, 14:05
Откуда: Самара
Контактная информация:

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 - это уже не совсем идеальный эксперимент!

Аватара пользователя
Виктория
Писатель
Сообщения: 113
Зарегистрирован: 28 дек 2012, 14:05
Откуда: Самара
Контактная информация:

Re: Clang

Непрочитанное сообщение Виктория » 02 апр 2013, 18:08

А мне попалось - Embarcadero тоже выбрало в качестве ориентиров Clang-совместимость
в блоге и на самом сайте - http://www.embarcadero.com/products/cbuilder
Последний раз редактировалось Виктория 04 апр 2013, 15:25, всего редактировалось 1 раз.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей