Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проект SoLo развивает загрузчик системных so-библиотек для полностью статических Linux-программ

20.08.2026 16:59 (MSK)

Опубликован проект SoLo, позволяющий полностью статическим Linux-программам, собранным с musl, загружать через dlopen() установленные в системе glibc-библиотеки, в первую очередь GPU-драйверы. Обычно статическая сборка несовместима с драйверами Vulkan и OpenGL, которые дистрибутивы поставляют в виде разделяемых библиотек, собранных с glibc. SoLo снимает это ограничение при помощи встроенного в исполняемый файл загрузчика ELF и прослойки, транслирующей вызовы glibc в musl-рантайм процесса — сам glibc в процесс не загружается, второго libc в процессе не появляется. Код написан на C++ и распространяется под лицензией MIT.

В репозиторий входит наглядный пример: статический исполняемый файл, в котором нет ни интерпретатора, ни динамической секции, штатным для Vulkan способом находит установленный в системе драйвер, загружает его вместе с зависимостями, выполняет вычислительный шейдер и сохраняет результат в PNG. В рамках непрерывной интеграции пример проверяется на Alpine, Fedora и Ubuntu с пакетами Lavapipe из штатных репозиториев этих дистрибутивов. Подход уже используется на практике — им формируются релизные сборки эмулятора терминала Shitty.

  1. Главная ссылка к новости (https://github.com/pg83/solo...)
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66103-solo
Ключевые слова: solo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 17:08, 20/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    "Tested on AMD radv, radeonsi, Intel, and NVIDIA GPUs under Linux, on Apple M1 under Asahi Linux, on Android under Termux, and on WSL with Mesa's dzn driver over Direct3D 12" - это что, теперь можно 1 бинарь для всего этого барахла изготавливать?
     
     
  • 2.3, Malinovsky (?), 17:13, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ога, да, а еще он на несколько мегабайт может быть легче - превед glibc оверхеду и следственно пожиранию оперативной памяти.
     
     
  • 3.7, sage (??), 17:25, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Где оверхед от glibc? Оно в одном экземпляре хранится на диске, и в одном экземпляре в оперативке, на все загрузившие её процессы.
    Или у вас миллион контейнеров на одном хосте с разными системами? Ну тогда удачи весь софт пересобрать с musl, и грузите копии всего статического кода.
     
     
  • 4.11, Malinovsky (?), 17:30, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы наверное бинарники никогда не видели какой размер имеют без всякой статики бинарники glibc, отчего и сам Void musl меньше памяти требует. В общем и целом это в процентах довольно значительный объем когда цель - сделать рабочее окружение для сборки из исходников без лютого избытка оперативной памяти, прямо как в наши дни когда память уже скоро буквально будет на вес золота, а пока лишь половину от его стоимости имеет.
    Я со сборкой из исходников много лет опыта имею и Void musl прекрасно себя проявил. По крайней мере на моем компе с 12900K когда нет нужды делать вид что glibc хоть чем-то интересна на домашнем компе, кроме сборки OpenOffice. Когда я его трогал последний раз он был намертво приколочен к glibc. Это был спортивный интерес. Меня вполне устраивает LibreOffice.
     
     
  • 5.16, sage (??), 17:36, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Лень лезть смотреть сколько там занимают сошки от glibc, на какой-нибудь убунте. Слоп-машина такое выдает:

    > A standard compiled, unstripped libc.so shared library is roughly 10 MB to 12 MB, while a stripped, release-ready version drops down to about 2 MB to 3 MB. A full installation package (which bundles locales, international character converters, and timezone databases) generally requires between 20 MB and 45 MB of disk

    Вам символы и локали не нужны? Или даже 2-3 Мегабайта жалко?

     
     
  • 6.29, Malinovsky (?), 18:24, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Лень лезть смотреть сколько там занимают сошки от glibc, на какой-нибудь убунте.
    > Слоп-машина такое выдает:
    >> A standard compiled, unstripped libc.so shared library is roughly 10 MB to 12 MB, while a stripped, release-ready version drops down to about 2 MB to 3 MB. A full installation package (which bundles locales, international character converters, and timezone databases) generally requires between 20 MB and 45 MB of disk
    > Вам символы и локали не нужны? Или даже 2-3 Мегабайта жалко?

    Вы просто забываете что все может иметь значение. Чтобы пройти компиляцию на 6 потоках qtwebengine надо допустим 8 гигабайт памяти, да и то он допустим полезет в файл или раздел подкачки. Как только это произойдет допустим 400 мегабайт там будут люто тормозить процесс компиляции, потому что механизма доставания из файла подкачки в процессе сборки люди не придумали. Тут вытеснение кеша из памяти и то сверхзадача, а тут надо понять что в памяти места много и можно отключить файл подкачки, чтобы содержимое перекочевало в память и продолжить собирать уже быстро.
    Это надо мозги иметь разработчикам. У них же как правило вагоны памяти. На практике же у людей подобный действия надо проводить вручную на каком-нибудь ноутбуке. И мне пофиг кому та нравится пользоваться бинарными дистрибутивами, если моя сборка и настройка работает вдвое быстрее и даже Pentium n4200 чувствует себя бодро в современном интернете. Так что память может иметь крайне важное значение  если надо вышеописанные действия сделать раз или два или 6 раз, то что лучше? на мой взгляд преимуществ от glibc против оптимизации системы и кода недостаточно, чтобы ей пользоваться.

     
  • 5.18, Аноним (18), 17:39, 20/08/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 6.28, Malinovsky (?), 18:18, 20/08/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 5.19, Аноним (19), 17:41, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Глибцы не настолько жирнее musl, чтобы на 8+ гигабайтных системах оверхед чувствовался. Это всё ещё экономия на спичках, пока в репозиториях валяются брёвна на Java, JS и Python.

    А вот если взять одноплатник с гигом памяти или печатную машинку на core2duo (или что там, днищебуки с впаянной рамой, где могут и 4 гига оставить?), тогда да.

    Днищебукам нужны решения с упором на -Os в CFLAGS, musl и, возможно, zram/zswap. Вроде, armbian таким занимался.

     
     
  • 6.34, Malinovsky (?), 18:51, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если использовать точку зрения потребителя да, а вот ежели сменить за создателя, то как это улучшает жизнь людей? Вот у меня есть плата с ограничением в 2.25 гиб оперативки. Может и можно убрать ограничение, но это надо постараться, чтобы из DDR2 выцарапать объем при 2-х модулях доступных, но 8 гигов можно заиметь. Для P4 неактуально - musl, роутер, принт сервер, ретро игры - в общем ничего серьезного.

    А атомным ноутбукам много что можно сделать в современных реалиях - перевод рендера на Vulkan, использование Wayfire/Sway, оптимизация опций загрузки с отключением патчей безопасности, но больше чем -O3 сомнительно ставить. там еще можно -flto покрутить, например -flto=thin или auto, если поможет и прочие параметры, но мало что реально повлияет. У большинства хорошо, если +10% производительности будет.

    Просто ради прикола делать мелкие бинари через -Os чаще нет смысла когда нужна скорость.
    Так что по итогу это что-то вроде этого будет как строка под абзацем, хотя clang тоже может сделать все, но я чаще пользовался gcc. Тут может быть разница уровня - в GCC все работает стабильно, в clang периодически падает. Надо проверять, поэтому не могу советовать clang. Недостаточно опыта с ним. Все же это агрессивные оптимизации, которые работали у меня стабильно. Поэтому я не понимаю тех кто боится их использовать. Бояться надо страха в случае с компиляцией.

    gcc -O3 -flto -march=native

     
  • 4.12, Аноним (19), 17:31, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Или у вас миллион контейнеров на одном хосте с разными системами?

    Вот это. Чтобы надёжно собирать софт под любой линукс, надо статическую либц, либо собирать на slackware. Собирают, как правило, на ubuntu. Результат сваливается с мисматчем глибцов - и тут придётся по манам LFS собирать глибцы, тулчейн, а потом ещё и либы.

    Так как глибцы нормально не пришпандорить, да потом ещё и с глибц мисматчем не прилинковаться к нужным либам, вот эта штука позволит собирать только бинарник, а сошки тянуть прилинкованные к глибцам.

    Можно будет раздавать софт вне контейнеров.

     
     
  • 5.20, sage (??), 17:42, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > надо статическую либц

    Это НИКОГДА не надо делать. Для сборки под старые системы нужно нормальный кросскомпилятор использовать, который грузит системную glibc, без использования новых функций. Если контейнер крутит софт, который от сишной либы не зависит, то с ней вообще линковаться не надо, ни динамически, ни статически.

    (но, конечно, from scratch лень делать - это же работать надо)

     
     
  • 6.22, Аноним (22), 17:49, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это очень хорошо, когда под конкретную старую систему собираешь, а если просто хочешь, чтобы крутилось по возможности везде?
     
     
  • 7.26, sage (??), 17:57, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Оно и будет работать везде, что новее чем эта старая система. Если только сами не придумаете как себе сломать ABI. Смысл таргетиться на предыдущие версии ядра и glibc в том, что старые системные вызовы не удаляются и функции из glibc остаются. Да, их поддержка на новых системах будет работать через костыли совместимости (уже встроенные в систему), но альтернатива только поднимать требования к системе, и собирать под неё.
     
  • 6.32, Аноним (19), 18:42, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Это НИКОГДА не надо делать.

    Почему?

     
  • 3.25, Аноним (25), 17:56, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > превед glibc оверхеду

    Musl уже научился не тормозить софт так, что им пользоваться невозможно? Вот уж где оверхед.

     
  • 2.5, sage (??), 17:19, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Видимо, для всего что может загрузить твой бинарь, предоставить функции ядра, и с чем может работать musl.

    То есть винда и макось мимио, а для большей части линуксов это не слишком полезно.

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

     
     
  • 3.14, Аноним (19), 17:33, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >То есть винда и макось мимио

    В теории, musl как раз внутри APE живет на обоих. Если сделать эмулятор vcrt и что там в макоси, можно APE линковать одновременно и к линуксовым либам, и не к линуксовым.

     
     
  • 4.23, sage (??), 17:49, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    На винде не работают линусовые so-шки. Сабж предназначен как раз для загрузки их вулкана.

    Чтобы оно работало на винде нужно как минимум PE загрузчик DLL поддержать. И dyld-ов на маке.

     

  • 1.2, Malinovsky (?), 17:11, 20/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Shitty забавный терминал, хоть и немного нестабильный после сборки, но забавно как это выглядит. Чтобы уменьшить размер загружаемого файла можно собрать его с musl и при необходимости он заработает на glibc с со всеми подушечками где надо установленными, чтобы программа ни дай бог не грохнулась. На Musl все работает или падает и третьего не дано. Много раз приходилось чинить в musl версии Void исходники, чтобы все собралось и заработало. Вроде это все и прикол, но musl давно пора в массы и не только на роутерах с OpenWRT.
     
     
  • 2.4, pg83 (ok), 17:14, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > хоть и немного нестабильный после сборки

    Ну ты шли ишью в github, автор оперативно исправляет!

     
     
  • 3.8, Malinovsky (?), 17:26, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Никогда таким не занимался. Вот ежели баг с железом, тогда в багзиллу пишу, но это считанные разы было. Когда у тебя Gentoo или еще что-то из исходников собрано разработчики ядра тебя вежливо посылают лесом. И все. Потому что им нравится когда ядро собрал их местный Peter Phil, а всем остальным они не доверяют. Я даже драйвер не просил исправить для Creative AE-7, потому что там сходу - пришлите Creative AE-7 мне в США или изучите мега адовый дебаг.
    У меня есть эмуляторы терминала, которые работают. Вот если пойду мады гонять с tintin++ или вроде того, тогда ну может быть. Но меня устраивает скорость работы Wayfire 0.11 на вулкане с UHD770. Я просто чую что под капотом у shitty пачка багов крутится. Их и без меня должны распознать. Я уже на внутреннем ощущении определяю работает ли программа нормально и обычно все сходится. Ну потому что заедания в доли секунды даже на древних эмуляторах не бывает. А пока он не прикрутит нормальную опцию копирования текста как в konsole или lxterminal его shitty останется не у дел. Потому что мне что, заморачиваться с буфером обмена отдельно только ради копирования текста? Я не настолько упертый. Собрать из исходников могу, но упарываться не вижу смысла.
     
     
  • 4.10, pg83 (ok), 17:29, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну напиши мне сюда, я починю. А что не так с буфером обмена?
     
     
  • 5.13, Malinovsky (?), 17:32, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну он работает только внутри терминалов через Ctrl+Insert, Shift+Insert. Вставить скажем в браузер или в kate не получится, а это основной пример когда буфер обмена работает. Большинство эмуляторов терминалов сломаны на деле. Я потыкаю может новую версию и скажу, но мне это без особой надобности. Просто буду иметь ввиду.
     
  • 3.30, sage (??), 18:25, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    pg83, привет!

    А поддержку винды в shitty навайбкодить получится? Или оно никогда не планируется?

     
  • 2.9, sage (??), 17:27, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > все работает или падает и третьего не дано

    А вам хочется чего-то промежуточного? Чтобы оно вроде запускалось, но потом в случайные моменты падало по непонятным причинам?

     
     
  • 3.24, Malinovsky (?), 17:56, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    По-моему и так понятно что подпорки от glibc это как раз оно. Меня вполне устраивает musl, который если падает, то падает, а не делает вид что все нормально. Это как винда, которая делает вид что ваша мышка работает когда на деле там идет дикий спам ошибок и мышь почти сдохла. На винде это выглядит как некоторые глюки мыши, а на линуксе курсор прыгает в разные стороны. Так и так мышка практически сдохла. Сенсор накрылся. Делать с ней что-то это все равно что потратить 200 тысяч рублей на уколы собачке, которой 16 лет и тогда она может быть поживет еще немножко. Я прекрасно понимаю что например кошечек выживает сколько-то на какую-то площадь, даже в городе, а не то что я злой, потому что не бегаю спасать кошечек целыми днями. Они плодятся с большим запасом. Это их стратегия выживания. У людей, точнее у человечества во главу угла был поставлен разум. Мне аргументы уровня девочек с большими наивными глазами, которые увидел хирурга за работой не очень хочется разбирать ан атомы, чтобы стало понятно, что вот это уже край и дальше начнется совсем деградация. И во этот плюшевый подход это glibc. Он нравится маленьким девочкам. А musl просто делает то как оно сказано ему делать и не выдумывает. Разработчик сказал - он сделал. Мне нравится отсутствие собственной жизни приложений. Это как раз то чего не должно быть, поэтому я всеми руками за musl.
     
     
  • 4.27, sage (??), 18:14, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > И во этот плюшевый подход это glibc.

    Сложно обсуждать позицию разработчиков glibc, которую выдумал в эпитетах комментатор с опеннета. А вопрос то в чем был?

    > А musl просто делает то как оно сказано ему делать и не выдумывает.

    Это компьютер. В нем вещи делаются так как их запрограммировали. Хоть там мусл, хоть что.

     
     
  • 5.35, Malinovsky (?), 18:57, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну конечно и я же выдумал нестандартное поведение glibc в ряде случаев, которые по сути узаконили ошибки, потому что иначе все рушилось.
    Если непонятно, то постарайтесь вдуматься почему glibc такая большая, хотя делает то же самое, тогда быть может начнется просвещение, но для этого может потребоваться провести 25 лет в позе лотоса в ожидании просвещения. Ну или использовать мозги.

    Я в курсе что там делается как запрограммировано. И одно дело запрограммировано делать ровно то что сказано делать или жить своей жизнью, отправлять телеметрию, сканировать папки, докладывать на каких сайтах вы были, что писали и т.л. Т сокрытие ошибок тоже попадает в разряд нежелательной деятельности. Именно поэтому glibc мне не нравится. Она делает то что от нее не просят.

    Вот вас не просили наезжать на меня с понтолыги, а вы все равно считаете свои выхлопы важными. Я описал что они делают без учета интересов разработчиков того что живет своей жизнью. Это не эпитеты вовсе. Господи, почему некоторые люди такие мозгоеды?

    Ну насрать мне на то что вам glibc нравится. Я ее просто использую если хочу. Ничего личного.

     
  • 4.33, Аноним (19), 18:48, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Делать с ней что-то это все равно что потратить 200 тысяч рублей на уколы собачке, которой 16 лет и тогда она может быть поживет еще немножко. Я прекрасно понимаю что например кошечек выживает сколько-то на какую-то площадь, даже в городе, а не то что я злой, потому что не бегаю спасать кошечек целыми днями. Они плодятся с большим запасом. Это их стратегия выживания. У людей, точнее у человечества во главу угла был поставлен разум. Мне аргументы уровня девочек с большими наивными глазами, которые увидел хирурга за работой не очень хочется разбирать ан атомы, чтобы стало понятно, что вот это уже край и дальше начнется совсем деградация.

    Дяденька, а у тебя не обострение СДВГ? Тебя в каждом опусе уносит куда-то там вдаль. Конкретно так уносит, на целый фанфик. Разве что скобочки не ставишь на полтекста.

     
     
  • 5.38, Malinovsky (?), 19:07, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, я здоров, спасибо что поинтересовались. У меня просто очень развитые коммуникативные навыки, эмоциональный интеллект, полноценная личность (не путать с полуличностями), образное мышление, объемное восприятие действительности и еще много чего подобного сверху. Помимо того что я не женщина и гипер активности у меня быть не может.
    Можете с тем же успехом обратиться к бойцам СВО и спросить чего это они со своим синдромом гиперактивности выносят врагов, которые пытаются их убить. А потом услышите их позывные и они внезапно будут не их настоящими именами. Я в отличие от местных никого, кто прячется за никами публично объясняю разные вещи и если бы я был в корне чокнутый как вам хочется видеть, то уж наверное у меня не было бы лучше всех настроенной системы, начиная с железа и заканчивая оптимальной настройки ПК. Со всеми людьми не сравнивал, но полагаю что у большинства будет не лучше чем у меня эффективность и скорость. Скорость конечно же во главу угла поставлена, но без минусов. Внезапно так. Попробуйте сообразить подобное на своей системе и я с удовольствием погляжу на то как вы будете это все описывать когда все же достигнете результата сами не подглядывая мои видео.
    У меня вот армия из 6 подписчиков вот пожалуйста. Можете попробовать найти того кто в адеквате и смог меня превзойти.
    Можете начать  видео про скрытую силу видеокарт или андервольт, если вас хватит на просмотр. А потом используя быструю перемотку сравните это скажем с сотней крупных видео на данную тему. Про скрытую силу видеокарт не будет скорее всего вообще ничего, так что другие видео сравнивайте. Так можно постепенно прийти к осознанию что не все на опеннете псевдо эксперты, а мужчины могут быть активными. Как мотоциклы, знаете? Там динамика движения гораздо активнее, чем на типовых корытах на четырех колесах.

    https://vkvideo.ru/@club239700498/all

     

  • 1.6, Аноним (6), 17:24, 20/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ещё один нейрослоп-проект, класс!
     
     
  • 2.15, pg83 (ok), 17:35, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/



      ┌─────────────┐
      │             │
      │   ███ ███   │
      │  █████████  │
      │ ███████████ │
      │█████████████│
      │█████████████│
      │ ███████████ │
      │  █████████  │
      │   ███████   │
      │    █████    │
      │     ███     │
      │      █      │
      │             │
      └─────────────┘



     

  • 1.17, Xasd1 (?), 17:39, 20/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Код написан на C++

    а на нормальном языке программирования (C) почему было не написать?

     
     
  • 2.21, pg83 (ok), 17:43, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Жизнь слишком коротка, чтобы писать еще одну хештаблицу для С. Вот завезут в стандарт - тогда поговорим.
     
     
  • 3.36, Ivan_83 (ok), 19:01, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Шо, на гитхубе не нашлось ни одной годной реализации, обязхательно всю гадость тащить в стандарт?
     

  • 1.31, Аноним (31), 18:38, 20/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Очередной ии-слоп? Скоро народ будет шарахаться от софта, в контрибьютерах которого ии-агенты и искать в описании слова «Created without AI», лол.
     
     
  • 2.37, Аноним (37), 19:06, 20/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    раньше искали линукс created without shegorin, а теперь будет created without ai

    ai это новый shegorin

    shegorin стал нейросеткой и от него уже не спастись

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру