Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 5

Компилятор генерирует мегабайты мусора

05.09.2015, 00:06. Показов 3408. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно скачал компилятор Си. Мне понравилось, что он небольшой и простенький. Давно хотел создавать экзешники. Написал пустое окно. Размер откомпилированного файла был всего 15 килобайт. Из них где-то половина просторанства нули для выравнивания. Через месяц заметил, что файл стал сильно увеличиваться. Теперь он занимает почти 15 мегабайт. Посмотрел в HEX редакторе. Там ужас! Компилятор вместо кода записывает текст. Какие-то константы, которые я даже не писал. Ещё названия ВСЕХ процедур и переменных. Даже цифры записываются каждая по отдельности в конце файла. Это нормально? Может это из-за подключаемых файлов? Не знаю что там написано и это меня смущает. Особенно странный windows.h. В него многократно вложены много других файлов, некоторые из которых мне даже не нужны. Почему нельзя написать вообще без заголовочных файлов? Что я делаю не так? Как можно избежать ненужных включений в исполняемом модуле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2015, 00:06
Ответы с готовыми решениями:

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

Перевод из бит в мегабайты и обратно
Нужна помощь в написании программы :Перевод из бит в мегабайты и обратно.

Перевод 24ТБ в гигабайты и мегабайты
Здравствуйте, помогите решить задачу ,пожалуйста :( Выполнить перевод 24ТБ в гигабайты и мегабайты, с помощью Microsoft Excel

29
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
06.09.2015, 23:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от sfinexer Посмотреть сообщение
как этого можно избежать
Не использовать хлам - Borland / Qt etc. MSVC неплохо оптимизирует код (+ можно еще ужать ExePacker'ом). Не гнаться, без нужды, за новейшими версиями - как правило, в старых код компактнее. Не использовать STL, С run-time компактнее и быстрее. Использовать MFC - библиотеки входят в поставку Windows. Заменять вызовы библиотечных функций на их WinAPI аналоги (на любителя - отказаться от стандартного run-time, заменив на компактный альтернативный).

Не по теме:

Мелкие утилиты у меня, обычно, укладываются в несколько килобайт.

0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 23:41
gazlan, да но на томже борланде совсем недавно код был компактный, сейчас тотже код а размер в разы.
Ну хоро, сделаем поправку на наличие всеразмерных иконок для семерки, еще на всякое, ну пускай накинем 1 мегабайт, а откуда остальные 5 взялись, в пустом то приложении.

Я понимаю вас gazlan, но хочется же использовать библиотеки для техже компонентов формы, возможности разные, и прочее.
Автора темы не видно пока, но для меня пока несовсем очевиден переход на тотже GCC, хотя библиотеки компонентов постоянно развиваются.

Не по теме:

PS: Для меня больше подходит то что мне понятно, GCC в отличие от борланда (где даже непонятно где и маке хранится и вобще где чего) более понятен, и формат тогоже маке файла можно писать примитивно и все будет работать, для больших проектов ручное создание макефайла неподходит конечно.

0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
06.09.2015, 23:42
Цитата Сообщение от sfinexer Посмотреть сообщение
Ничего там уже плючовать не надо, уже и так все приплюсовано поэтому такой и большой 21 килобайт.
Не у всех есть рантайм Qt и компилятора, так что либо пользователю придется ставить всё дополнительно, либо таскать вместе с прогой.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 23:48
Croessmah, Я привел код, 12 килобайт. Ничего с собой таскать не надо.
Вот его маке
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Project: GUI
# Makefile created by Dev-C++ 5.11
 
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = obj/main.o
LINKOBJ  = obj/main.o
LIBS     = -L"D:/Dev-Cpp/MinGW64/lib" -static-libgcc -mwindows -m32 -s
INCS     = -I"D:/Dev-Cpp/MinGW64/include"
CXXINCS  = -I"D:/Dev-Cpp/MinGW64/include"
BIN      = exe/GUI.exe
CXXFLAGS = $(CXXINCS) -march=native -mtune=native -Ofast -m32 -std=c++14
CFLAGS   = $(INCS) -march=native -mtune=native -Ofast -m32 -std=c++14
DEL      = rm.exe -f
 
.PHONY: all all-before all-after clean clean-custom
 
all: all-before $(BIN) all-after
 
clean: clean-custom
    ${DEL} $(OBJ) $(BIN)
 
$(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
 
obj/main.o: main.cpp
    $(CPP) -c main.cpp -o obj/main.o $(CXXFLAGS)


Добавлено через 2 минуты
как видно
C++
1
-static-libgcc -mwindows -m32 -s
Все библиотеки в нем.


А борланд например непонятно каким макаром из 12 килобайт делает 6 мегабайт, уму непостижимо. Но зато - разрабатывать графику быстрее тут ничего не скажеш.
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
06.09.2015, 23:52
Цитата Сообщение от sfinexer Посмотреть сообщение
на том же борланде

Не по теме:

Признаться, Borland только в дизассемблере/отладчике видел (BCB/Delphi), но то что видел, ничего, кроме отвращения не вызывает.

0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
07.09.2015, 00:00
Цитата Сообщение от gazlan Посмотреть сообщение
Признаться, Borland только в дизассемблере/отладчике видел (BCB/Delphi), но то что видел, ничего, кроме отвращения не вызывает.
Я думаю 99% кто им пользуется это знают. Я например немогу переделать часть проектов на иной компилятор, а новые, так и продолжаю на нем делать. Программы для мат вычислений и прочего делаю на GCC но там тока вычисления, поэтому там консоли более чем достаточно.

Но Ведь люди которые начинают изучать чтото первым делом куда ломанту? Конечно к тому что наслуху, и поверьте мне мало кто имея выбор и возможность делать консольное или на форму кинуть пару кнопок сделает выбор в сторону первого.
А потом, через год-два поняв ошибку и упущенное время (борланд не соответствует стандартам языка С/С++ !!!! ) вернутся, если будет возможность на нормальные компиляторы.
PS: Я например немогу почти никуда перейти, ибо часть программ на дефли, борландовском, аналогов просто нет.
И опции -s там нету....
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
07.09.2015, 00:45

Не по теме:

Мне кажется, это проблема даже не продуктов Borland (в 90-х они были легендой, появление Sidekick даже не с чем сопоставить), сколько кривого и непродуманного WinAPI - нет простого способа создать полноценное приложение для Windows (клоны TurboVision - OWL, VCL, MFC и прочие frameworks были, разной степени удачности, попытками управления этой сложностью).


Цитата Сообщение от sfinexer Посмотреть сообщение
не могу почти никуда перейти
Не знаю, близко ли это, но мне попадались программы на Free Pascal - они более компактны, интерфейс внешне очень близок к Delphi, при этом заявлена мультиплатформенность.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
07.09.2015, 02:00
Автора нет, тогда я уж подытожу тему, помоему она раскрыта полностью.

1) Компилировать финальные приложения необходимо с опцией релиза, без включения отладочной информации, и профилирования кода.
2) Размер конечного файла конечно будет зависить от тех или иных библиотек специфичных для используемой среды, библиотеки графического интерфейса пользователя, а также от параметров уровня оптимизации кода.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
07.09.2015, 09:01
1) Компилировать финальные приложения необходимо с опцией релиза, без включения отладочной информации, и профилирования кода.
Угу, а когда у пользователя что-то где-то упадет, удачи потом
разбираться с дампами без отладочной информации...
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
07.09.2015, 10:46
Цитата Сообщение от Убежденный Посмотреть сообщение
разбираться с дампами
:-)

Отдельная (больная) тема. XCrashReport : Exception Handling and Crash Reporting
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2015, 10:46

Как конвертировать байты в мегабайты ( на примере видеокарты)?
ManagementObjectSearcher Vd = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_VideoController"); ...

Acer Aspire 5551 потерянные мегабайты ОЗУ?
Добрый день! Вопрос такой: купил ноутбук. Озу поидеи 2гб но показывает 1,74 гб. Я так понял встроенная видеокарта "забирает"...

Написать программу перевода из битов в байты, килобайты, мегабайты и обратно
написать программу перевода из битов в байты, килобайты, мегабайты и обратно!

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7 Посоветуйте какой...

Сборка мусора
Нужна ли в Си ++ «сборка мусора»? Почему возникает такая проблема и как она решается в Си++?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru