Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pav1uxa
1779 / 1619 / 617
Регистрация: 23.01.2014
Сообщений: 5,850
Завершенные тесты: 1
#1

Как правильно компилировать программы? - C++

22.03.2014, 14:43. Просмотров 488. Ответов 5
Метки нет (Все метки)

Компилятор MinGW. Создаю простое окно с использованием WinAPI и windows.h. Компилирую через g++ с флагом -mwindows.

По сути в программе минимум информации, ничего кроме окна, никаких текстов, никаких функций и прочее, но исполняемый файл уже весит пару десятков килобайт, при этом на компьютерах, которых нету библиотеки libstd (или как то так) он вообще не работает. Для того чтобы можно было запустить на любом компьютере компилирую с флагом -static. Но при этом исполняемый файл весит уже более 100 килобайт. Есть предположение что если продолжать программировать и компилировать в таком стиле, то исполняемые файлы будут получаться слишком уж большими

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

2. Как компилировать так, чтобы можно было запускать на любом компьютере, но при этом чтобы файл сохранял адекватный размер, сопоставимый с функционалом?..

Код программы думаю приводить смысла нет, это стандартный пример из msdn работы winapi функции CreateWindow()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 14:43     Как правильно компилировать программы?
Посмотрите здесь:

C++ Есть общая структура программы, как правильно (написать)определить функции к ней?
Как компилировать в BCC55 C++
C++ Как правильно компилировать драйвера?
Как правильно компилировать проект си в С++ Builder 6 C++
C++ Как правильно засунуть две строчки в код программы?(
Как компилировать в Dev C++ C++
Как правильно сделать самообновление программы? C++
C++ Как компилировать проекты для юникода?
Как правильно прописать данный код программы? C++
Как компилировать в Code::Blocks? C++
Как в Dev-C++ компилировать Windows приложение C++
C++ Компилировать и объяснить код, получающий двоичный дамп программы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
22.03.2014, 15:15     Как правильно компилировать программы? #2
Цитата Сообщение от pav1uxa Посмотреть сообщение
исполняемые файлы будут получаться слишком уж большими
в QT попробуйте сделать тоже самое - 13мб будет весить пустое окно
pav1uxa
1779 / 1619 / 617
Регистрация: 23.01.2014
Сообщений: 5,850
Завершенные тесты: 1
22.03.2014, 18:51  [ТС]     Как правильно компилировать программы? #3
То есть это нормально что программа с пустым окном весит 130 кбайт?
0x10
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
22.03.2014, 19:02     Как правильно компилировать программы? #4
pav1uxa, чем конкретно Вас напрягает размер? Или Вы программы распространяете на дискетах?
Понятно, что есть N способов уменьшить размер бинарника. Прежде всего, собирать нужно без отладочной информации и с оптимизацией (у gcc опция -O2). Можно еще воспользоваться утилитой strip, которая удаляет символы из файла. По тупому запросу "reduce exe file size" гугл наверняка выдаст что-нибудь еще.
pav1uxa
1779 / 1619 / 617
Регистрация: 23.01.2014
Сообщений: 5,850
Завершенные тесты: 1
22.03.2014, 20:03  [ТС]     Как правильно компилировать программы? #5
Цитата Сообщение от 0x10 Посмотреть сообщение
pav1uxa, чем конкретно Вас напрягает размер?
Да не напрягает в общем то. На самом деле я просто думал что я что-то делаю не так и нужно как то иначе. Но раз вы считаете, что для exe файла, который при запуске просто открывает windows окно, размер >100кб нормальный, то вопрос закрыт...
Убежденный
Системный программист
Эксперт С++
15104 / 6799 / 1073
Регистрация: 02.05.2013
Сообщений: 11,113
Завершенные тесты: 1
23.03.2014, 11:16     Как правильно компилировать программы? #6
Цитата Сообщение от pav1uxa Посмотреть сообщение
Есть предположение что если продолжать программировать и компилировать в таком стиле, то исполняемые файлы будут получаться слишком уж большими
Это предположение ошибочно.
Да, компоновщик включает в исполняемый файл некоторый набор "материала",
необходимого для базовой поддержки C++, но это килобайты. Остальное - ваше.

На мой взгляд даже в первом случае программа почему то весит многовато, можно как то исправить?
Все известные мне компиляторы позволяют отключать стандартные библиотеки,
оставляя "голый" C++ или даже C. Бинарник в этом случае получается размером в
считанные килобайты (Visual C++ - полтора кило в релизе). Но при этом исчезают
различные "удобства", например невозможно подключить std::string или
пользоваться исключениями...

То есть это нормально что программа с пустым окном весит 130 кбайт?
Это более, чем нормально.
Вот если бы она весила 130 мегабайт, был бы повод задуматься.

Кстати, у меня проект объемом примерно 50-70К строк кода укладывается в
два с половиной мегабайта exe+dll. Никакого "разбухания" нет.
Yandex
Объявления
23.03.2014, 11:16     Как правильно компилировать программы?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru