|  Вариант для распечатки | Пред. тема | След. тема | ||
| Форум Программирование под UNIX (Компиляция) | |||
|---|---|---|---|
| Изначальное сообщение | [ Отслеживать ] | ||
| "Clang vs Gcc: две компиляторных системы в одном дистрибутиве" | +/– |  | 
| Сообщение от sidtver (ok), 08-Окт-20, 13:50 | ||
| Компилятор - это помимо собственно фронтенда/оптимизаций/кодогенератора еще binutils, библиотеки runtime-поддержки и стандартные библиотеки. У gcc - это, например, gas/ld, glibc, libstdc++. По мере своего развития длительное время компилятор clang использовал binutils и библиотеки от компилятора gcc. Но разработчики clang последовательно движутся к полной замкнутости своего проекта. У них есть свой ассемблер (llvm-as), они активно развивают свой линкер, сделали свой аналог libstdc++ с названием libc++ и разрабатывают свой аналог glibc с названием libc. Наличие стандарта C/C++ должно гарантировать компиляцию программ обоими компиляторами, но никак не гарантирует совпадение хедеров из двух разных реализаций библиотек. (Например, errno может быть переменной, а может быть макросом, раскрывающимся в вызов функции и т.д. и т.п.) У двух независимо-разрабатываемых библиотек неизбежно будут библиотеки без бинарной совместимости. | ||
| Ответить | Правка | Cообщить модератору | ||
| Оглавление | 
| Сообщения | [Сортировка по ответам | RSS] | 
| 1. Сообщение от Аноним (-), 08-Окт-20, 15:06 | +/– |  | 
| Все держу только на gcc и шланги с llvm выпилены напрочь. Но на сколько я знаю, ссылки на библиотечные функции прописаны у эльфов, у меня нет под рукой апы сделаной шлангом но мне что-то подсказывает что там обычный эльф. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #16 | ||
| 2. Сообщение от Аноним (2), 08-Окт-20, 16:54 | +/– |  | 
| > В отсутствии стандартов на манглирование, хедеры стандартных библиотек, механизм EH, процессирование шаблонов, ассемблер | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #3 | ||
| 3. Сообщение от Аноним (-), 08-Окт-20, 17:15 | +1 +/– |  | 
| 
 | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #2 Ответы: #4, #7 | ||
| 4. Сообщение от Аноним (2), 08-Окт-20, 17:44 | +/– |  | 
| > Речь то о том что апа под libc.so собранная gcc уже не будет работать и наоборот. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #3 Ответы: #5 | ||
| 5. Сообщение от Аноним (5), 08-Окт-20, 18:01 | +/– |  | 
| 
 | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #4 Ответы: #6 | ||
| 6. Сообщение от Аноним (2), 08-Окт-20, 18:11 | +/– |  | 
| > Вот инетерсно было бы узнать как там гнутый функционал, есть ли, можно ли на него расчитывать в той реализации от шланга | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #5 | ||
| 7.  
    Сообщение от Павел Отредиез  (?), 08-Окт-20, 18:16 | +/– |  | 
| >> когда винду успели пересобрать под icc и mingw? | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #3 Ответы: #9 | ||
| 8. Сообщение от Аноним (8), 08-Окт-20, 19:05 | +/– |  | 
| У меня штук 20 разных компиляторов с разными либами стоит, гента. Можно любой системны пакет собрать произвольным системным компилятором любой версии, binutils правда придётся вручную переключать (зачем использовать не последнюю версию?), переключение шланг/гцц вообще без проблем переменной окружения. Проблем не замечал, но я массово и не собираю шлангом -- он всегда хуже при ближайшем рассмотрении (что-то простое он может соптимизировать лучше). Или собрать какой-нибудь пакет и все зависимости с другой libc или вообще для другой архитектуры. В частности, собираю софт для венды, когда я проверял, он потом работал в 7, 8 и 10 на системной libc (без cygwin). | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Ответы: #10 | ||
| 9. Сообщение от sidtver (ok), 08-Окт-20, 22:07 | +/– |  | 
| > Если две разные реализации libc, то их so должны отличаться в названии, | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #7 Ответы: #11 | ||
| 10. Сообщение от sidtver (ok), 08-Окт-20, 22:14 | +/– |  | 
| > binutils | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #8 Ответы: #12 | ||
| 11.  
    Сообщение от Павел Отредиез  (?), 08-Окт-20, 22:19 | +/– |  | 
| >[оверквотинг удален] | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #9 Ответы: #14 | ||
| 12. Сообщение от Аноним (8), 08-Окт-20, 22:22 | +/– |  | 
| Есть binutils-config, который управляет симлинками на используемую системную версию. Её можно переключать, также как и компилятор по-умолчанию (gcc-config). Но компилятор и линкер можно задать переменными окружения вроде CC и LD. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #10 Ответы: #13, #15 | ||
| 13. Сообщение от Аноним (8), 08-Окт-20, 22:25 | +/– |  | 
| Ещё можно выставить вот эти, но вроде это излишне, и можно спокойно использовать гнутые | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #12 | ||
| 14. Сообщение от sidtver (ok), 08-Окт-20, 22:28 | +/– |  | 
| > Я не говорил, что собирать с одной, а исполнять с другой. Я | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #11 | ||
| 15. Сообщение от sidtver (ok), 08-Окт-20, 22:40 | +/– |  | 
| > Есть binutils-config, который управляет симлинками на используемую системную версию. | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #12 | ||
| 16. Сообщение от sidtver (ok), 08-Окт-20, 23:11 | +/– |  | 
| firefox/rust/llvm | ||
| Ответить | Правка | Наверх | Cообщить модератору | ||
| Родитель: #1 | ||
| Архив | Удалить | Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема | 
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |