Musl & Alpine Linux
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Давно искал систему сборки, позволяющую собирать нативно и статически на андроид-устройстве. Компилятор gcc из entware, насколько я понял, не позволяет собирать статически. В Debian (chroot) статически собрать можно не все, причем если и собирается, то размер бинаря будет минимум 500 kb. Недавно наткнулся на библиотеку musl. Она как раз ориентируется (в то числе) на статическую сборку минимального размера. Сначала я установил musl-gcc в Debian (chroot), но затем понял, что удобнее ставить Alpine Linux, основанный на musl-libc. Так, удалось собрать патченный под андроид static dropbear размером 310 kb, и static sftp-server для него размером 146 kb. Причем, почему-то через musl-gcc в Debian dropbear получился еще меньше - 221 kb, но пришлось пройти через ад отсутствующих заголовков и самому собирать zlib. Для openssl и sftp-server мне это показалось слишком. Никаких дополнительных оптимизаций не проводил, но результаты для меня уже более, чем удовлетворительные.
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
-
- Администратор
- Сообщения: 1912
- Зарегистрирован: 09 авг 2015, 15:33
Если речь идет о минимальном размере бинарников, то сейчас действительно используют или musl или uclibc-ng.
Entware-3x и debian используют системную библиотеку glibc - она самая большая по размеру, но совместимость у нее наилучшая. Поскольку Entware устанавливается на внешний носитель, то задача экономить занимаемое пространство в Entware не стоит.
Entware-3x и debian используют системную библиотеку glibc - она самая большая по размеру, но совместимость у нее наилучшая. Поскольку Entware устанавливается на внешний носитель, то задача экономить занимаемое пространство в Entware не стоит.
-
- Сообщения: 447
- Зарегистрирован: 12 авг 2015, 14:14
- Откуда: Смоленск
kaztost, размер итогового статического бинарника можно уменьшить комбинируя следующие трюки:
- не включать в итоговый бинарник не используемые секции кода из внешних библиотек, передавая при сборке ключи:
Код: Выделить всё
CFLAGS += -ffunction-sections -fdata-sections LDFLAGS += -Wl,--gc-sections
- исключив debug-информацию утилитой тулчейна strip,
- сжав бинарник с помощью upx.
-
- Сообщения: 223
- Зарегистрирован: 17 июл 2017, 00:29
Александр Рыжов писал(а):Источник цитаты CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -Wl,--gc-sections
Спасибо.
-
- Сообщения: 13
- Зарегистрирован: 02 мар 2018, 07:23
kaztost,
может, пригодится, надранная мною по клочкам из разных тем строка макс. оптимизации:
CFLAGS=" -static -static-libgcc-ffunction-sections -fdata-sections -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fomit-frame-pointer -Wl,-Map=ИМЯ_ПРОГИ.mapfile"
LDFLAGS=" -static -Wl,--gc-sections -Wl,-s -Wl,-v"
дралось/собиралось для оптимизации ядра под атом х32, собеседники выкладывали тесты эффективности каждого ключа, этот набор был после несколькодневной дискуссии признан безглючно-безупречным маст-хэвом.
скомпилированное так для armv7 у меня отлично работает, для aarch64 собирал лишь дважды, и нареканий от скачавших не было,
может, пригодится, надранная мною по клочкам из разных тем строка макс. оптимизации:
CFLAGS=" -static -static-libgcc-ffunction-sections -fdata-sections -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fomit-frame-pointer -Wl,-Map=ИМЯ_ПРОГИ.mapfile"
LDFLAGS=" -static -Wl,--gc-sections -Wl,-s -Wl,-v"
дралось/собиралось для оптимизации ядра под атом х32, собеседники выкладывали тесты эффективности каждого ключа, этот набор был после несколькодневной дискуссии признан безглючно-безупречным маст-хэвом.
скомпилированное так для armv7 у меня отлично работает, для aarch64 собирал лишь дважды, и нареканий от скачавших не было,
Вернуться в «Собираем софт сами (пакеты, прошивки)»
Кто сейчас на конференции
Всего 1 посетитель :: 0 зарегистрированных, 0 скрытых и 1 гость (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость