MyTetra Share
Делитесь знаниями!
Как скомпилировать C++ программу с минимальным размером бинарника в GCC
Время создания: 07.06.2021 14:38
Текстовые метки: linux, gcc, c++, g++, размер, бинарник, маленький, минимальный, уменьшить, компиляция, сборка
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/1623065890dxhudyru21/text.html на raw.github.com

Для уменьшения размер бинарника в Linux, собираемого через компилятор GCC , достаточно добавить в программу на C++ следующие строки:



#include <asm/unistd.h>


extern "C"

void __attribute__((noreturn)) _start()

{

__asm__ __volatile__ ("syscall" : : "a"(__NR_exit), "D"(main()) : "rcx", "r11", "memory");

__builtin_unreachable();

}



После чего программу надо скомпилировать с опцией -nostdlib.


Для программы из одной функции main() типа 'Hello word" получается размер 8800 байт. Однако, можно пропробовать данный бинарник пропустить через strip, и в некоторых случаях бинарник уменьшается до ~2 Кб.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования