|
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 5
|
|
Компилятор генерирует мегабайты мусора05.09.2015, 00:06. Показов 3106. Ответов 29
Метки нет (Все метки)
Недавно скачал компилятор Си. Мне понравилось, что он небольшой и простенький. Давно хотел создавать экзешники. Написал пустое окно. Размер откомпилированного файла был всего 15 килобайт. Из них где-то половина просторанства нули для выравнивания. Через месяц заметил, что файл стал сильно увеличиваться. Теперь он занимает почти 15 мегабайт. Посмотрел в HEX редакторе. Там ужас! Компилятор вместо кода записывает текст. Какие-то константы, которые я даже не писал. Ещё названия ВСЕХ процедур и переменных. Даже цифры записываются каждая по отдельности в конце файла. Это нормально? Может это из-за подключаемых файлов? Не знаю что там написано и это меня смущает. Особенно странный windows.h. В него многократно вложены много других файлов, некоторые из которых мне даже не нужны. Почему нельзя написать вообще без заголовочных файлов? Что я делаю не так? Как можно избежать ненужных включений в исполняемом модуле?
0
|
|
| 05.09.2015, 00:06 | |
|
Ответы с готовыми решениями:
29
Какой компилятор с++ генерирует малого размера программы ? Перевод из бит в мегабайты и обратно
|
|
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
|
|
| 05.09.2015, 00:15 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 5
|
||||||||||||
| 05.09.2015, 01:05 [ТС] | ||||||||||||
|
Kerry_Jr, код не буду выкладывать. Он слишком большой. Просто хотел спросить как лучше не надо делать. Например обычный месседжбокс:
Добавлено через 9 минут Вот. Скопировал из самого EXEшника.
Добавлено через 8 минут Проклятые компиляторы. Когда руками писал, такого не было.
0
|
||||||||||||
|
Неэпический
|
|||
| 05.09.2015, 02:09 | |||
Добавлено через 2 минуты
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 05.09.2015, 15:11 | ||
|
вкл. режим "релизная сборка" 2. вкл режим оптимизаций по размеру исполняемого файла. 3. вкл динамическую линковку с рантаймом с++ 4. вкл "вырезать все отладочные символы". 5. профит!
1
|
||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
| 05.09.2015, 15:47 | |
|
0
|
|
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
|
| 05.09.2015, 16:18 | |
|
Меня другое интерисует может часть библиотек которые в рантайме вовсе ненужны, ибо конечный исполняемый файл программы совершенно не соответствует обьему кода в программе.
Добавлено через 8 минут У меня такое чувство что в рунтайм он записывает все что не лень, даже то что не используется! Добавлено через 9 минут И также возникает вопрос как очистить от лишнего.... пустая форма занимает места порядка 6,5 МЕГАБАЙТ. Это полностю пустая форма, без единой кнопочки ВООБЩЕ без кода.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 05.09.2015, 21:04 | ||
|
0
|
||
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
||
| 05.09.2015, 21:23 | ||
|
Да выкладывать особо нечего XE8 от эмбаркадеро.
Но сам факт того что раньше программы мало когда были больше 1 мегабайта, причем достаточно сложные, то сейчас как никрути уже 6-7 мегабайт. Опции ничем не помогают. Интересно другое, Эмбаркадеро содержит в себе компилятор CLANG
0
|
||
|
2630 / 1642 / 266
Регистрация: 19.02.2010
Сообщений: 4,361
|
||
| 06.09.2015, 21:26 | ||
|
0
|
||
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
|
| 06.09.2015, 21:48 | |
|
А лет 25 назад исполняему файлы были меньше чем занимал сам код программы!!!
Вот и думается чего там можно было такого наплодить в exe
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 06.09.2015, 21:52 | ||
|
Хотя, сравнивая размеры некоторых программ с их функциональностью, возникает ощущение что туда просто добавляют мусора для веса.
1
|
||
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
|
| 06.09.2015, 21:59 | |
|
Renji,
Вот автора темы и меня также интерисует как этого можно избежать. Библиотека VCL борланда около 6 мегабйт, что примерно на этот размер прибавляет вес ЛЮБОГО exe файла. А если как мне - программы надо раздавать по сети, одно дело когда как верно вы заметили функциональность оправдывает "вес" программы, а тут тока мусор приходтся гонять, вместо 300 килобайт которые получаются без статической линковки всякого мусора, но может быть часть "мусора" нужна. Конечно в свете терабайтных дисоков вся эта "помойка в файле" мало кого наверное сейчас волнует, но всеже. Я помню 8 лет назад моя система обновления даже не могла файлы скачивать больше 1 метра - небыло необходимости... программы бяли максимум 600 килобайт, с графикой и со всем, а сейчас почти ТОТЖЕ код в 10 раз больше занимает.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 06.09.2015, 22:23 | ||
|
0
|
||
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
|
| 06.09.2015, 22:32 | |
|
Renji, В том и дело что почемуто GCC генериует отменные программы, правда автор не указал какой компилятор использует, ясно только что он под виндусом, а это совершенно не означает что там именно GCC...
Я для себя в большинстве случаев компилирую консольные программы (или DLL), и там да - именно GCC но вся графика (у меня) на эмбаркадеровском компиляторе. Qt - да, кросплатформенно, правда я его под темже дебианом и смотрел, в виндусе он пол КДЕ с собой притянет.
0
|
|
|
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
|
|||||||
| 06.09.2015, 22:57 | |||||||
|
А самый меленький будет наверное как в примере Кликните здесь для просмотра всего текста
в 32 бит около 12 килобайт, это для виндуса. НО!!!! Почему же большие среды для разработки делают от 6+ мегабайт... наверняка можно это обойти...
0
|
|||||||
| 06.09.2015, 22:57 | |
|
Помогаю со студенческими работами здесь
20
Acer Aspire 5551 потерянные мегабайты ОЗУ? Написать программу перевода из битов в байты, килобайты, мегабайты и обратно Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор Сборка мусора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc
О Господи, Вечный, Ты . . .
Я помоги, Бесконечный. . .
Я прошу Ты. . .
Я погибаю, спаси. . .
Я прошу Тебя Вечный. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|