LINUX.ORG.RU

Статические библиотеки С++ в Арче и Дебиане

 , ,


0

1

Всем привет. Вопрос такой: по заданию из универа необходимо поставить и настроить Линукс для последующей разработки. При этом нельзя использовать Арч(который уже поставлен, и любовно настроен), т.к., по утверждению преподавателя, в нем нормально не поддерживаются статические библиотеки, и как следствие нормально разрабатывать не получится.

Насколько это соответствует действительности, есть ли реальные проблемы с арчем? Дебиан лучше подходит для разработки и обучения?

Всем заранее спасибо за ответы.

PS Немного не по теме раздела, но хотелось получить комментарии людей подписанных на именно на этот раздел.


в нем нормально не поддерживаются статические библиотеки

Что значит «в нём не поддерживаются»? В нём — это где? В тулчейне из репозиториев арча? В библиотеках (каких?) из репозиториев арча? Ещё где-то?

и как следствие нормально разрабатывать не получится

А как статические библиотеки связаны с «нормальной разработкой»? Статические библиотеки — это костыль для виндузятников, которым в систему не завезли адекватный пакетный менеджер, и злостных проприетарщиков, которые делают софт на от5.1ись и не желают его поддерживать и интегрировать. А для того, чтобы «нормально разрабатывать», статические библиотеки не нужны, нужны динамические.

по утверждению преподавателя

Не берусь утверждать с полной уверенностью, но мне кажется, что не прав тут он.

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

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

Если требуются полностью статические бинарники (например, чтобы запускать на другом линуксе), то нужна другая стандартная библиотека C вместо glibc. Например, musl.

Поставить её можно в том числе на arch: https://www.archlinux.org/packages/community/x86_64/musl/

Если принципиально нужен статически собранный весь линукс, то таких мало и они все экспериментальные. Есть, например, http://sabotage.tech/

Дебиан лучше подходит для разработки и обучения?

Ровно также как и Arch.

P.S. С точки зрения современного линукса нормальная разработка не использует статические библиотеки.

monk ★★★★★
()

Может ты как-то не так преподавателя понял? Пригласи его на ЛОР, заслушаем обе стороны!

fluorite ★★★★★
()

т.к., по утверждению преподавателя, в нем нормально не поддерживаются статические библиотеки, и как следствие нормально разрабатывать не получится.

Ты либо чего-то не договариваешь, либо не понял, либо препод некомпетентен. Для «нормальной разработки» статические библиотеки вообще не нужны.

slovazap ★★★★★
()

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

Наркоман, но отчасти. Рач действительно не очень любит работу со статическими библиотеками, мне пару раз приходилось править PKGBUILD и собирать руками, чтобы были статические версии.

[savant@savant-devel memtester-4.3.0]$ ls /lib/*.a | wc -l
271
[savant@savant-devel memtester-4.3.0]$ ls /lib/*.so | wc -l
1431
Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от monk

Если требуются полностью статические бинарники (например, чтобы запускать на другом линуксе), то нужна другая стандартная библиотека C вместо glibc. Например, musl.

ну 4.2 жи. Статику если ничего не изменилось, можно и с glibc собрать. размер правда конский будет, но зависимостей только ABI ядра.

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

Я тоже об этом подумал. Но зачем ему бинари без исходников, а при наличии исходников в чём проблема собрать?

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

можно и с glibc собрать. размер правда конский будет, но зависимостей только ABI ядра.

Нельзя, glibc дёргает dlopen для некоторых вещей, и для работы программы всё равно нужна будет установленная glibc той же версии.

hateyoufeel ★★★★★
()

Препод просто хочет посмотреть сорцы и запустить прогу, а конпелять не хочет.

Соответственно ему нужен статический бинарь чтобы не париться с версиями библиотек.

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

Почему бы ему тогда не назвать конкретный дистрибутив и не разрешить использовать докер?

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

API меняется, ABI достаточно стабильно.

anonymous
()

скорее всего твоему преподу просто влом разбиратся с archем так как у него есть пособие только по дебиану(или он разбирается в дебиане что маловероятно) и это просто отмазка

anonymous
()

в нем нормально не поддерживаются статические библиотеки

Одно из двух: либо твой препод нуб, либо нуб ты и не понял его правильно.

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

Ну если преподу преподавать влом тогда даже не знаю что посоветовать.

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

Ничего не понял в итоге. Статические библиотеки просто вшиваются при компиляции, правильно? Т.е. проблем с переносимостью не должно возникнуть? Или всё таки возникают? Установка статических библиотек в арч решают проблему? PS Задание я понял верно, оно текстом написано.

zianid
() автор топика
Ответ на: комментарий от Dark_SavanT

Только официально апстрим glibc очень нехорошо на такую шнягу смотрит. Отсюда обычно собирают с остальными либами статически, но с glibc подревнее(шоб везде взлетело) - линкуются всё же динамически.

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

С embedded другая история, согласен, там обычно всё под конкретные узкоспециализированные задачи затачивается и смысла в динамических либах везде как в regular дистрибутивах в общем-то и нет.

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

статические библиотеки это суть набор .o файлов с которыми твой софт линкуется.

динамические библиотеки - это особый бинарный файл который подгружается в адресное пространство процесса по требованию при запуске.

Арч далеко не все библиотеки которые ты ставишь через pacman ставит в статическом виде, поэтому, если препод потребует слинковаться статически с чем-то таким что в арче только динамическую .so предоставляет, тебя ждёт занимательное приключение с изучением PKGBUILD или самостоятельной сборки этой библиотеки и подсовывания результата компиляции к твоей лабе. Если не боишься потратить лишнее время на изучение деталей - дерзай.

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

Опять же по ситуации. эмбеднутый линукс больше всё же на динамике, чтобы сэкономить место. статикой там обычно только busybox собран.

Это скорее если надо бинарь какой-то распространять на зоопарк ядер, тогда действительно имеет смысл залинковаться наглухо статически с каким-нибудь musl, если софт позволяет, и иметь в зависимостях разве что ядро версии не ниже чего-нибудь не слишком несвежего.

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