0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
1

Компилятор

06.08.2013, 18:31. Показов 2853. Ответов 11
Метки нет (Все метки)

Здравствуйте!
У меня назрел вопрос по поводу размера файлов *.exe
Использую Dev-C++. Недавно захотел посмотреть размер exe-шников(скомпилированы в этой ide, язык c++). Все они весят > 500 килобайт.
Посмотрел на *exe gcc компилятора. Скомпилировал программу "Hello world" на си и exe-шник весит 19 килобайт.
Решил снести Dev-C++ и поставить MinGW отдельно. Скомпилировал файлы из командной строки, но весят они столько -же.
Буду рад, если вы подскажете мне, в чем проблема. Спасибо за внимание.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2013, 18:31
Ответы с готовыми решениями:

компилятор
Здравствуйте, я написал код. а чтоб скомпилировать у меня нету компилятора, удалил по ошибке, а...

компилятор
при запуске программы (программа простая скачал из сайта куда сдавал свои задачи) идет работа...

Компилятор С++
посоветуйте пожалуста среду для С++ хорошую.

Компилятор С++
Какой компилятор можно использовать для среды NetBeans в Windows, кроме Cygwin?

11
Эксперт Java
3964 / 2571 / 466
Регистрация: 28.04.2012
Сообщений: 8,348
06.08.2013, 18:46 2
https://www.cyberforum.ru/post4906222.html

Bash
1
g++ -Os -s hello.cpp
1
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 19:06  [ТС] 3
korvin_,
Да, вроде бы все и получилось. Возможно все дело в том, что я компилировал исходник, который был написан до удаления Dev-C++.
Миниатюры
Компилятор  
0
Эксперт Java
3964 / 2571 / 466
Регистрация: 28.04.2012
Сообщений: 8,348
06.08.2013, 19:11 4
Вот тут еще немного информации, почему получаются большие екзешники: http://stackoverflow.com/quest... g-compiler
1
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 килобайт) запускаются без ошибок
0
Эксперт Java
3964 / 2571 / 466
Регистрация: 28.04.2012
Сообщений: 8,348
06.08.2013, 20:05 6
Ну так само собой, почитай про динамически подключаемые библиотеки.
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
06.08.2013, 20:07 7
Цитата Сообщение от Chamenur Посмотреть сообщение
Подключил все что-нужно при помощи -static, и теперь Exeшник весит >1000 Килобайт
Какие флаги помимо -static ? Что за исходник? Си или С++ ? Почему постоянно все надо вытягивать?
0
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
06.08.2013, 20:11  [ТС] 8
castaway, исходник C++(стандартный hello world).
флаги: -Os, -s, -static.
Размер Exeшника - 646 килобайт.
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
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 байт.
1
Эксперт Java
3964 / 2571 / 466
Регистрация: 28.04.2012
Сообщений: 8,348
06.08.2013, 21:22 10
Цитата Сообщение от castaway Посмотреть сообщение
флаг -O3 почти всегда позволяет добиться наименьшего размера исполняемого файла.
Разве? -O3 же вроде как означает максимальную оптимизацию «скорости» выполнения, что напрямую с размером исполняемого файла не особо-то связано. Кроме того, AFAIK, O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
0
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,726
06.08.2013, 21:31 11
Цитата Сообщение от korvin_ Посмотреть сообщение
O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
Ofast наверное, а не O3
1
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
06.08.2013, 21:34 12
Цитата Сообщение от korvin_ Посмотреть сообщение
Разве?
Это легко понять если вникнуть в смысл определения оптимизации.
Уровень оптимизации в GCC не говорит о том, что чем он больше - тем больше файл и быстрее программа.
Пример: -Os включает все флаги -O2 и некоторые другие, способствующие уменьшению размера файла.
http://gcc.gnu.org/onlinedocs/... tions.html

Добавлено через 52 секунды
Цитата Сообщение от gray_fox Посмотреть сообщение
Ofast наверное, а не O3
Да. -O3 абсолютно безопасен.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2013, 21:34
Помогаю со студенческими работами здесь

Компилятор
Посоветуйте хороший компилятор для windows 7 x64 с/с++ Code blocks не предлагнать

Компилятор
Привет) Подскажите ,пожалуйста, по работе компилятора, он(компилятор) берет исходный код и...

Компилятор c++
Доброго времени суток! Никак не могу справиться с написанием компилятора. Над парсером уже месяц...

Компилятор C не C++
Где можно скачать один крмпилятор C (без C++!!!) можно можно в IDE главное чтобы весил как можно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru