170 похожих чатов

Насколько хорошая практика статически линковать libgcc?

25 ответов

22 просмотра

она все равно тянет кучу всего динамически. так что смысла нет.

Michael-Chambers Автор вопроса
️️ ॐ
она все равно тянет кучу всего динамически. так чт...

А мне остальное не слишком важно, надо на debian buster притащить gcc-9+ из bullseye. Целевая платформа для деплоя тот же buster. gcc-9 притащит с собой уже libgcc-10+. Стандартная библиотека вроде не конфликтует. Вот и думаю, линковать статически или gcc собрать со старой libgcc

Michael Chambers
А мне остальное не слишком важно, надо на debian b...

а если в итоговом бинаре окажется две статически слинкованных libstdc++/libc, можно словить больших проблем

Alexander Karaev
почему?

ldd glibc.a там будет libnss как минимум

Michael-Chambers Автор вопроса
Alexander Karaev
тебе придётся и glibc линковать

а зачем? Старая подходит по зависимостям пакету gcc-9

️️ ॐ
ldd glibc.a там будет libnss как минимум

после статической линковки libstdc++/libc остаются только ld.so и какие-то ещё совершенно базовые либы, аби у которых меняется раз в 30 лет

Alexander Karaev
после статической линковки libstdc++/libc остаются...

оно будет работать только если списки функций и размеры типов совпадают. это + мильен UB

️️ ॐ
ldd glibc.a там будет libnss как минимум

ради эксперимента посмотрел зависимости одной из либ, которую линкую статически с stdc++: linux-gate.so.1 (0xf7f08000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7b27000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7b05000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7a01000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf79e2000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf77f9000) /lib/ld-linux.so.2 (0xf7f0a000) все эти либы не менялись уже много лет, не говоря уже о том, что у тс просто gcc-10 <-> gcc-9

Michael-Chambers Автор вопроса
Alexander Karaev
ради эксперимента посмотрел зависимости одной из л...

Проблема только с libgcc_s... Версии остальных между gcc-8 -> 9 можно не менять вроде как

Alexander Karaev
ради эксперимента посмотрел зависимости одной из л...

ну вот человек хочет юзать разные debian... вот он потом и расскажет) я уже проверял. если у тебя не пустой main() а есть например хотяб сокеты или даже dns то ты увидишь что списочек будет чуть больше.

Michael-Chambers Автор вопроса
️️ ॐ
ну вот человек хочет юзать разные debian... вот он...

libhidapi-hidraw.so.0 => /lib/x86_64-linux-gnu/libhidapi-hidraw.so.0 libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 Тут еще grpc+boost+qt статически влинкованы но список не слишком большой. Или я не так смотрю?

Michael Chambers
libhidapi-hidraw.so.0 => /lib/x86_64-linux-gnu...

а каждая из этих либ никого больше не хочет?)

Michael-Chambers Автор вопроса
️️ ॐ
а каждая из этих либ никого больше не хочет?)

загуглил, но я не вижу её нигде в зависимостях. Эти хотят только друг друга

Michael Chambers
загуглил, но я не вижу её нигде в зависимостях. Эт...

как только у тебя будет чтото типа dns (тыже не по ip собрался голому ходить) то ты получишь libnss. grpc просто транспорт же. короче оно не запустится просто. вот и всё

Michael-Chambers Автор вопроса
️️ ॐ
как только у тебя будет чтото типа dns (тыже не по...

пока по айпи (что-то вроде огромной локалки), а там и bullseye перейдет в релиз и можно перекатываться.

Michael Chambers
пока по айпи (что-то вроде огромной локалки), а та...

проще просто dockerfile завести чтоб собрать бинарь для нужного дистра. без всякого гемора с линковкой

Michael-Chambers Автор вопроса
️️ ॐ
проще просто dockerfile завести чтоб собрать бинар...

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

Michael Chambers
я бы завел, вот только мне надо чтобы потом завело...

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

️️ ॐ
ну вот человек хочет юзать разные debian... вот он...

там как минимум boost::beast с http клиентом и сервером, думаю это уже показатель

Alexander Karaev
там как минимум boost::beast с http клиентом и сер...

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

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта