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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10
#1

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

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

Здравствуйте!
У меня назрел вопрос по поводу размера файлов *.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++
Вот Visual Studio это IDE а какой в нем компилятор? название его скажите плз)

Компилятор - C++
что делает компилятор он переводит в машинный язык что такое машинный язык

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

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

Компилятор - C++
Я знаю основу С + + , пишу программы на Microsoft Visual Studio 2010 Помогите понять понятия: гнусовський компилятор? P.S.возможно это...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
korvin_
1802 / 1270 / 196
Регистрация: 28.04.2012
Сообщений: 4,609
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_
1802 / 1270 / 196
Регистрация: 28.04.2012
Сообщений: 4,609
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_
1802 / 1270 / 196
Регистрация: 28.04.2012
Сообщений: 4,609
06.08.2013, 20:05 #6
Ну так само собой, почитай про динамически подключаемые библиотеки.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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_
1802 / 1270 / 196
Регистрация: 28.04.2012
Сообщений: 4,609
06.08.2013, 21:22 #10
Цитата Сообщение от castaway Посмотреть сообщение
флаг -O3 почти всегда позволяет добиться наименьшего размера исполняемого файла.
Разве? -O3 же вроде как означает максимальную оптимизацию «скорости» выполнения, что напрямую с размером исполняемого файла не особо-то связано. Кроме того, AFAIK, O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
06.08.2013, 21:31 #11
Цитата Сообщение от korvin_ Посмотреть сообщение
O3 может иногда привести к глюкам из-за не совсем безопасных оптимизаций.
Ofast наверное, а не O3
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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 абсолютно безопасен.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2013, 21:34
Привет! Вот еще темы с ответами:

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

Компилятор С++ - C++
Скажите, пожалуйста, каким редактором для написания кода вы пользуетесь, и какой компилятор используете? Напишите недостатки и...

компилятор с++ - C++
кто знает может можно сделать так чтоб компилятор не использовал фиксированных адресов, а использовал только относительное смещение?

компилятор - C++
Подскажите какой-нибудь хороший компилятор с++??


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.08.2013, 21:34
Ответ Создать тему
Опции темы

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