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

Компилятор - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 18:31     Компилятор #1
Здравствуйте!
У меня назрел вопрос по поводу размера файлов *.exe
Использую Dev-C++. Недавно захотел посмотреть размер exe-шников(скомпилированы в этой ide, язык c++). Все они весят > 500 килобайт.
Посмотрел на *exe gcc компилятора. Скомпилировал программу "Hello world" на си и exe-шник весит 19 килобайт.
Решил снести Dev-C++ и поставить MinGW отдельно. Скомпилировал файлы из командной строки, но весят они столько -же.
Буду рад, если вы подскажете мне, в чем проблема. Спасибо за внимание.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2013, 18:31     Компилятор
Посмотрите здесь:

компилятор C++
C++ Компилятор С++
C++ Компилятор C не C++
C++ компилятор с++
Компилятор C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korvin_
 Аватар для korvin_
1323 / 1094 / 160
Регистрация: 28.04.2012
Сообщений: 3,921
06.08.2013, 18:46     Компилятор #2
В чём писать?

Bash
1
g++ -Os -s hello.cpp
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 19:06  [ТС]     Компилятор #3
korvin_,
Да, вроде бы все и получилось. Возможно все дело в том, что я компилировал исходник, который был написан до удаления Dev-C++.
Миниатюры
Компилятор  
korvin_
 Аватар для korvin_
1323 / 1094 / 160
Регистрация: 28.04.2012
Сообщений: 3,921
06.08.2013, 19:11     Компилятор #4
Вот тут еще немного информации, почему получаются большие екзешники: http://stackoverflow.com/questions/7...ngw-g-compiler
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 20:01  [ТС]     Компилятор #5
korvin_, появилась еще одна проблема.
Все exeшники теперь весят по 10 килобайт(это если с -s, без нее >20 Килобайт).
Но, если запустить программу на другом компьютере она не может найти какие-то dll.
Подключил все что-нужно при помощи -static, и теперь Exeшник весит >1000 Килобайт
P.S. когда была Dev-C++ ее программы (400 килобайт) запускались на другом компьютере без проблем.
И кстати с компилятором Gcc нет проблем. Программы (20 килобайт) запускаются без ошибок
korvin_
 Аватар для korvin_
1323 / 1094 / 160
Регистрация: 28.04.2012
Сообщений: 3,921
06.08.2013, 20:05     Компилятор #6
Ну так само собой, почитай про динамически подключаемые библиотеки.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.08.2013, 20:07     Компилятор #7
Цитата Сообщение от Chamenur Посмотреть сообщение
Подключил все что-нужно при помощи -static, и теперь Exeшник весит >1000 Килобайт
Какие флаги помимо -static ? Что за исходник? Си или С++ ? Почему постоянно все надо вытягивать?
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 20:11  [ТС]     Компилятор #8
castaway, исходник C++(стандартный hello world).
флаги: -Os, -s, -static.
Размер Exeшника - 646 килобайт.
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.08.2013, 20:24     Компилятор #9
Цитата Сообщение от Chamenur Посмотреть сообщение
Размер Exeшника - 646 килобайт.
Это нормально. У меня столько же. Ну не 1Мб же как ты говорил.

Добавлено через 8 минут
А можно не пользоваться стандартными библиотеками и сделать так:
C++
1
2
3
4
5
6
7
#include <windows.h>
 
extern "C" __attribute__((noreturn)) void my_main()
{
    // ...
    ExitProcess( 0 );
}
Makefile
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
APP = main
CFL = -pipe -flto -c -Wall -O3 -fno-exceptions -fomit-frame-pointer
LFL = -pipe -flto -e _my_main -s -static -nostdlib -nostartfiles -nodefaultlibs
SRC = $(APP).cpp
OBJ = $(SRC:.cpp=.o)
LIB = -lkernel32
 
all: $(OBJ)
    g++ $(LFL) -o $(APP).exe $(OBJ) $(LIB)
 
%.o: %.cpp
    g++ $(CFL) $*.cpp -o $@
 
clean:
    @del $(OBJ)
    @del $(APP).exe
*** флаг -O3 почти всегда позволяет добиться наименьшего размера исполняемого файла.

При этом размер EXE-шника == 2048 байт.
korvin_
 Аватар для korvin_
1323 / 1094 / 160
Регистрация: 28.04.2012
Сообщений: 3,921
06.08.2013, 21:22     Компилятор #10
Цитата Сообщение от castaway Посмотреть сообщение
флаг -O3 почти всегда позволяет добиться наименьшего размера исполняемого файла.
Разве? -O3 же вроде как означает максимальную оптимизацию «скорости» выполнения, что напрямую с размером исполняемого файла не особо-то связано. Кроме того, AFAIK, O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.08.2013, 21:31     Компилятор #11
Цитата Сообщение от korvin_ Посмотреть сообщение
O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
Ofast наверное, а не O3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 21:34     Компилятор
Еще ссылки по теме:

компилятор с++ C++
C++ компилятор
C++ Компилятор C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.08.2013, 21:34     Компилятор #12
Цитата Сообщение от korvin_ Посмотреть сообщение
Разве?
Это легко понять если вникнуть в смысл определения оптимизации.
Уровень оптимизации в GCC не говорит о том, что чем он больше - тем больше файл и быстрее программа.
Пример: -Os включает все флаги -O2 и некоторые другие, способствующие уменьшению размера файла.
http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

Добавлено через 52 секунды
Цитата Сообщение от gray_fox Посмотреть сообщение
Ofast наверное, а не O3
Да. -O3 абсолютно безопасен.
Yandex
Объявления
06.08.2013, 21:34     Компилятор
Ответ Создать тему
Опции темы

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru