Всем добрый вечер! Хочу поделиться парой трюков, которые помогут уменьшить размер исполняемого файла вашей программы на C++. Это полезно, если вы пишете под встраиваемые системы, создаёте утилиты или просто хотите более компактный бинарник.
🔹 1. Отключаем отладочную информацию
Компиляторы по умолчанию добавляют отладочные символы в бинарник. Их можно убрать флагами:
g++ -o my_program my_program.cpp -O2 -s
Флаг
-s удаляет все отладочные символы. 🔹 2. Оптимизируем код
Используйте
-O2 или -Os, чтобы компилятор оптимизировал код для уменьшения размера:
g++ -o my_program my_program.cpp -Os
Флаг
-Os специально оптимизирует код для минимального размера. 🔹 3. Статическая или динамическая линковка?
Если в системе уже есть нужные библиотеки, используйте динамическую линковку (
-shared для .so в Linux, /MD в MSVC). Но иногда статическая линковка (флаг
-static) позволяет избавиться от лишних зависимостей. 🔹 4. Убираем ненужные зависимости
Можно использовать
strip, чтобы дополнительно очистить бинарник:
strip my_program
А ещё, если пишете на C++, то не забывайте про
-ffunction-sections -fdata-sections и --gc-sections, чтобы убрать неиспользуемый код. 🔹 5. Убираем RTTI и исключения
Если не используете
dynamic_cast и исключения, отключите их:
g++ -o my_program my_program.cpp -Os -fno-rtti -fno-exceptions
Это существенно уменьшит размер!
➡️ @cpp_geek