LINUX.ORG.RU

libc++ теперь есть и в Debian Experimental

 , ,


0

3

Как результат работы, проделанной Andrej Belym в рамках Google Summer of Code, в Debian Experimental теперь есть новая реализация стандартной библиотеки C++ (libc++), разрабатываемая под эгидой llvm и лицензией MIT/UIUC. В виде deb-пакетов теперь предлагаются как разделяемые библиотеки времени выполнения (libc++abi1), так и определенные в стандарте заголовочные файлы (libc++-dev).

Библиотека libc++ доступна для использования как через clang, так и (с более длинной командной строкой) через g++.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от renya

тогда g++ и его run-time даже не открыл глаза на это )

pylin ★★★★★ ()
Ответ на: комментарий от pylin

Я не программист, но успел заметить странное поведение библиотеки libstdc++. Она обратно совместима только в одну сторону: старые программы работают после обновления GCC. Новые не работают в старой системе, ругаясь на libstdc++.so.6. На libc никто не ругается - хотя я видел требования обновить и его тоже - его требовал libstdc++.so.6, взятый из новой системы (хотя другой вариант той же библиотеки из GCC 4.6 сработал).

Можешь объяснить, почему так? А то некоторые люди не знают об этом, и компилируют новые версии проприетарных игр в самом новейшем GCC. В то время как игры 2005 года работают как в старых системах, так и в новых, без доустановки чего-либо.

В Microsoft всё ещё хуже. Если в старом компиляторе скомпилировано - потом будет просить установить библиотеки Visual C++ 2005. Если в новом - 2008 или 2010. Похоже, там обратной совместимости нет вообще.

Откуда вообще эти проблемы с C++? Почему с C обычным они не наблюдаются?

Может быть, эта реализация библиотеки как раз без проблемы - как libc.so.6.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от O02eg

И раньше было можно. у GCC в GPL Exception это описано.

Adjkru ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Можешь объяснить, почему так?

Обычная обратная совместимость, и отсутствие прямой совместимости. И у gcc libstdc++, и у glibc.

Adjkru ★★★★★ ()
Ответ на: комментарий от Adjkru

Всё, понял. Эх, вот бы ещё сайт в стиле «Help! Linux ate my RAM!» с ссылкой на RPM'ки и DEB'ки и tar.gz с самым последним необходимым минимумом системных библиотек из стандарта LSB. Можно со списком дистрибутивов Linux для установки в 1 клик... Тогда было бы вообще идеально! Но нет же - приходится компилировать.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)

А это точно тянет на новость?

v9lij ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Откуда вообще эти проблемы с C++? Почему с C обычным они не наблюдаются?

Потому что C++ cannot into stable ABI. Особенность языка.

anonymous ()
Ответ на: комментарий от ZenitharChampion

Она обратно совместима только в одну сторону: старые программы работают после обновления GCC. Новые не работают в старой системе, ругаясь на libstdc++.so.6.

Наверно потому что

Breaking ABI compatibility with old versions of the library was determined to be critical to achieving the performance goals of libc++.

m0rph ★★★★★ ()

Надо бы тег «вещества» добавить

Urchin ★★★ ()

Может, все-таки мини-новость сделать?

leave ★★★★★ ()
Ответ на: комментарий от pylin

Тем, что собирается clang-ом, соответственно, можно собрать в llvm bitcode и применять к нему LTO.

anonymous ()
Ответ на: комментарий от anonymous

В пакете libc++-dev есть helper-скрипт для ленивых, g++-libc++ называется...

anonymous ()
Ответ на: комментарий от ZenitharChampion

последним необходимым минимумом системных библиотек из стандарта LSB.

apt-get install lsb || yum install lsb || ... чем не походят?

onon ★★★ ()
Ответ на: комментарий от pylin

и чем она лучше чем гнутое

Более качествененый код, изначальная ориентированность на поддержку С++11

annulen ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Линкуй libstdc++ статически или таскай с бинарником

annulen ★★★★★ ()
Ответ на: комментарий от anonymous

Теперь можно на C++ писать и не GPL программы и компилировать их g++?

Всегда было можно.

Не всегда. Товариш Столман вместе с выходом GNU GPL v3 - пытался присвоить права на чужой код, просто «забыв» добавить exceptions в gcc/g++. Вот странно - новую лицензию придумал - а о такой малости забыл..

Ну потом естественно на него наехали и исключения были добавлены.. Но ведь осадочек остался?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.