LINUX.ORG.RU

А насколько можно «обезжирить» программу на C++?

 


1

3

Предположим, есть у меня исходники программы на С++. Если я перепишу ее так, чтобы не зависеть от стандартной библиотеки, насколько это может сэкономить размер исполняемого файла?

Раньше так особо не делал, или писал как есть на плюсах или сразу на С.

★★★★★

Последнее исправление: LongLiveUbuntu (всего исправлений: 1)
Ответ на: комментарий от LongLiveUbuntu

Для понимания:

Всё равно нет никакого понимания, зачем "уменьшить" существующую, и чем конкретно не устраивает её текущий размер. И если

Цель - сэкономить место на накопителе.

То почему это надо делать с программой? У тебя там наверняка 2/3 остальных файлов никто никогда не читает.

LamerOk ★★★★★
()

Если я перепишу ее так, чтобы не зависеть от стандартной библиотеки, насколько это может сэкономить размер исполняемого файла?

Это, наоборот, его увеличит

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

не вообще написать программу минимального размера, а именно уменьшить существующую.

Неясны ограничения. Если не переделывать, то почему бы не воспользоваться сжатием исполняемого файла?

ldd test; wc -c test; upx -9 test; wc -c test
        linux-vdso.so.1 (0x00007fffccb0d000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb501e70000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb501b60000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb501940000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb5015a0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb502600000)
37552 test
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     37552 ->     14424   38.41%  linux/ElfAMD   test

Packed 1 file.
14424 test

Почему бы не использовать на носителе сжатую файловую систему?

Если переделовать, то почему бы не добавить в систему, где программа выполняется, поддержку сжатых форматов исполняемых файлов и не генерировать исполняемый объектный файл своей программы в этом формате?

vM ★★
()

Весь секрет демосцен и микробинарников, это как раз наоборот, максимальное использование библиотек, присутствующих в ОС. Можно ещё срезать весь вывод в экстренных ситуациях, будет просто программа завершилась аварийно без пояснений и намёков где конкретно. Обычно всё это не стоит потраченных усилий, даже если бинарник весит 10 мегабайт.

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

Почему бы не использовать на носителе сжатую файловую систему? поддержку сжатых форматов исполняемых файлов

Тупо сжатые данные приведут к росту потребления памяти.

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

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

Когда ты их обвяжешь необходимой логикой, включая обработку EINTR, у тебя уже поллибс будет. А когда strcmp добавишь - вторая половина.

LamerOk ★★★★★
()