Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
pav1uxa
1847 / 1700 / 644
Регистрация: 23.01.2014
Сообщений: 6,079
Завершенные тесты: 1
#1

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

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

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

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

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

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

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

Как правильно компилировать драйвера? - C++
У меня есть масса исходников с файлами makefile и sources. Собираю проект nmake /f путьmakefile, так у меня вылетает ошибка 'fatal error...

Как правильно компилировать проект си в С++ Builder 6 - C++
Как правильно компилировать проект си в С++ Builder 6 так, что бы весь проект вместе в библиотеками сохранялся в один exe файл и я его мог...

Компилировать и объяснить код, получающий двоичный дамп программы - C++
Нашёл в книжке таких 2 примера: #include <cstring> #include <iostream> #define legal_psw "my.good.password" int main() { ...

Как правильно писать программы - C++
Можете подсказать какую-нибудь книгу или способ как можно научиться правильно создавать программы в плане их структуры, где может быть...

Как правильно сделать самообновление программы? - C++
Добрый день Есть программа которая должна обновляться Для ясности: Файл программы старой версии - PROGRAM_NAME Файл программы...

Как правильно прописать данный код программы? - C++
#include <iostream> #include <clocale> #include <cmath> #include <cstdlib> using namespace std; double masA={0}; long H(double...

5
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,036
22.03.2014, 15:15 #2
Цитата Сообщение от pav1uxa Посмотреть сообщение
исполняемые файлы будут получаться слишком уж большими
в QT попробуйте сделать тоже самое - 13мб будет весить пустое окно
0
pav1uxa
1847 / 1700 / 644
Регистрация: 23.01.2014
Сообщений: 6,079
Завершенные тесты: 1
22.03.2014, 18:51  [ТС] #3
То есть это нормально что программа с пустым окном весит 130 кбайт?
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,126
22.03.2014, 19:02 #4
pav1uxa, чем конкретно Вас напрягает размер? Или Вы программы распространяете на дискетах?
Понятно, что есть N способов уменьшить размер бинарника. Прежде всего, собирать нужно без отладочной информации и с оптимизацией (у gcc опция -O2). Можно еще воспользоваться утилитой strip, которая удаляет символы из файла. По тупому запросу "reduce exe file size" гугл наверняка выдаст что-нибудь еще.
0
pav1uxa
1847 / 1700 / 644
Регистрация: 23.01.2014
Сообщений: 6,079
Завершенные тесты: 1
22.03.2014, 20:03  [ТС] #5
Цитата Сообщение от 0x10 Посмотреть сообщение
pav1uxa, чем конкретно Вас напрягает размер?
Да не напрягает в общем то. На самом деле я просто думал что я что-то делаю не так и нужно как то иначе. Но раз вы считаете, что для exe файла, который при запуске просто открывает windows окно, размер >100кб нормальный, то вопрос закрыт...
0
Убежденный
Ушел с форума
Эксперт С++
15708 / 7218 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
23.03.2014, 11:16 #6
Цитата Сообщение от pav1uxa Посмотреть сообщение
Есть предположение что если продолжать программировать и компилировать в таком стиле, то исполняемые файлы будут получаться слишком уж большими
Это предположение ошибочно.
Да, компоновщик включает в исполняемый файл некоторый набор "материала",
необходимого для базовой поддержки C++, но это килобайты. Остальное - ваше.

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

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

Кстати, у меня проект объемом примерно 50-70К строк кода укладывается в
два с половиной мегабайта exe+dll. Никакого "разбухания" нет.
0
23.03.2014, 11:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 11:16
Привет! Вот еще темы с ответами:

Как правильно засунуть две строчки в код программы?( - C++
Вставить надо это: int ok; do { /********************************* *** Часть программы, *** которую нужно...

Как компилировать в BCC55 - C++
Собсна что нужно прописать в cmd, чтобы скомпилировать программу.

Как компилировать в Code::Blocks? - C++
На самом деле ерунда, просто для меня( как для новичка трудно). Я прохожу обучение по книжке "С++ за 21 день"( уже понял, что за 21 - это...

Есть общая структура программы, как правильно (написать)определить функции к ней? - C++
Здравствуйте! Задача из книги Стивена Прата 2ой день ни как не могу справится,помогите плз.Кто в курсе,проходил или знает как,подскажите...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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