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

Codeblocks > C++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 4.83
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
11.02.2013, 20:34     Codeblocks > C++ #1
Привет, всем форумчанам! Решил научиться программировать на C++. Примеры прогамм, пишу в IDE Code::Blocks (компилятор mingw) под Windows.

Как написано в книге по C++, начал с примера "Hello World!", и заметил, что на выходе получается немерянно здоровенный бинарник, размером в 943kB. Я так понял, что к бинарнику подключяются какие-то посторонние функции или вся либа "iostream". И в связи с этим, вопрос. Как сделать так, чтобы подключались только те функции, которые указаны в исходнике? Дело в том, что в Linux'е, этот же пример на C++, весит примерно ~5kB.

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 20:34     Codeblocks > C++
Посмотрите здесь:

Codeblocks! C++
codeblocks C++
Codeblocks C++
C++ codeblocks
CodeBlocks C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:41     Codeblocks > C++ #2
во-первых, смените debug на release, объем значительно уменьшится. к примеру ваша программа с 38кб уменьшилась до 9кб
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
11.02.2013, 20:44  [ТС]     Codeblocks > C++ #3
Уже делал, и программа стала ~500kB, а должна быть меньше.
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:50     Codeblocks > C++ #4
Цитата Сообщение от XiloManX Посмотреть сообщение
Уже делал, и программа стала ~500kB, а должна быть меньше.
ну тогда это проблемы ide или компилятора, я точно не знаю.
кстати, разве обычно с++ не начинают изучать с visual studio?)
в vs2008 ехе весит 9кб(релиз) и 38кб(дебаг)
в builder (rad xe3) exe весит 169кб(релиз) и 170кб(дебаг)

следовательно, напрашивается вывод, что все зависит от среды

Добавлено через 1 минуту
ps
включил rtl link и проект ставил весить в билдере 11кб(релиз)
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
11.02.2013, 21:00  [ТС]     Codeblocks > C++ #5
Цитата Сообщение от Tiva Посмотреть сообщение
ну тогда это проблемы ide или компилятора, я точно не знаю.
кстати, разве обычно с++ не начинают изучать с visual studio?)
Да, но Visual Studio платный и очень громоздкий, поэтому я выбрал лёгкий и бесплатный CodeBlocks.

Цитата Сообщение от Tiva Посмотреть сообщение
в vs2008 ехе весит 9кб(релиз) и 38кб(дебаг)
в builder (rad xe3) exe весит 169кб(релиз) и 170кб(дебаг)
Да, знаю. Уже пробовал.

Цитата Сообщение от Tiva Посмотреть сообщение
следовательно, напрашивается вывод, что все зависит от среды
Наверно, но мне думается, что там надо делать какие-то настройки в CodeBlocks, чтобы уменьшить размер бинарника. Видимо придётся программировать так, как есть, и в дальнейшем переходить в Linux.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,341
11.02.2013, 21:11     Codeblocks > C++ #6
При компиляции VS уже расчитывает на то, что на компе установлен Visual C++ Redistributable - набор библиотек.
Если его не будет, то и скомпилированная программа не запустится. Если в VS указать, чтобы он эти библиотеки пришивал к файлу exe, то он станет весить те же 500КБ. И от этого по мне так никуда не деться, таковы огрехи новых компиляторов - 500КБ это ведь совершенно не много. Если хочется по меньше, то беретсяя какой-нить старый компилятор компилируется там, например Borland C. Но и там уже вставляется ненужный код, так что можно программу деассемблировать и удалить ненужные куски. Но кто будет заниматься этим идиотизмом? В наше время 1ГБ - это и так мелочь... (За исключением пользователей SSD >_>)
Croessmah
11.02.2013, 21:25
  #7

Не по теме:

Цитата Сообщение от XiloManX Посмотреть сообщение
Да, но Visual Studio платный
Express версия бесплатна. Доступна для скачивания на сайте мелкософта.

nonedark2008
11.02.2013, 21:32
  #8

Не по теме:


Цитата Сообщение от Croessmah Посмотреть сообщение
Express версия бесплатна. Доступна для скачивания на сайте мелкософта.
Жалко, что на VS2012 Express не попрограммируешь, там кажись возможны только Метро-приложения. А так, закачка и установка VS это единичное дело и разряда "поставил и забыл". Ради лучшего функционала, отладки и анализа производительности, я бы потерпел =)

XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
13.02.2013, 05:37  [ТС]     Codeblocks > C++ #9
Вообщем, задал несколько вопросов на официальном форуме Code::Blocks. Как оказалось, бинарник такой большой, из-за того, что в него включается отладочная информация. И вообще, дело не совсем в Code::Blocks, а в компиляторе MinGW. И если указать соответствующие ключи в Code::Blocks, которые при компиляции будут переданы сопроцессору MinGW, то он будет размером всего 8.50kB. Хотя на мой взгляд и зто очень много, ибо на своём опыте это знаю.

Тут находится инструкция, с указанием, как сделать ваш бинарник меньше в Code::Blocks (на заморском языке).

Вообще на официальном сайте MinGW, написано, что бинарник такой большой по трём причинам:
1. Включается отладочная информация.
2. Производится раздельная компиляция.
3. Включается какая-то информация о времени запуска.

На счёт второго. Честно говоря не понемаю, как это влияет на размер, но да ладно.
На счёт третьего. Пробовал отключать соответсвуюшими ключами, но на размер, никак не повлеяло.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
13.02.2013, 06:08     Codeblocks > C++ #10
Цитата Сообщение от XiloManX Посмотреть сообщение
И если указать соответствующие ключи
ты про ключи-то договори...
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
13.02.2013, 06:44  [ТС]     Codeblocks > C++ #11
А чё говорить-то. Уже все ссылки даны: и на подробную инструкцию (в ней написано, какие ключи надо внести в Code::Blocks), и на подробное описание ключей. Если не знешь заморский язык, тогда Google translate в помощь.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
13.02.2013, 06:48     Codeblocks > C++ #12
тебе западло что ли ключи написать?
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
13.02.2013, 07:02  [ТС]     Codeblocks > C++ #13
Цитата Сообщение от kravam Посмотреть сообщение
тебе западло что ли ключи написать?
А тебе западло, посмотреть инструкцию?Там уже, все ключи написаны.

Открыть Build options (установить флажки только "Strip all symbols from binary" и "Optimize generated code for size", все остальные должны флаги, быть сброшены), вставить в Other options
-fno-rtti
-fno-exceptions
-ffunction-sections
-fdata-sections
-flto
Открыть Linker settings, в табе The Link libraries, вставить в Other linker options:
-------------------------------------------------------------------------------------------
-flto
-Os
-Wl,--gc-sections
-shared-libgcc
-shared-libstdc++
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
13.02.2013, 08:02     Codeblocks > C++ #14
я английский не знаю просто
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
13.02.2013, 08:10  [ТС]     Codeblocks > C++ #15
Цитата Сообщение от kravam Посмотреть сообщение
я английский не знаю просто
А Google translate, на что?
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
14.02.2013, 06:22     Codeblocks > C++ #16
Цитата Сообщение от XiloManX Посмотреть сообщение
Да, но Visual Studio платный и очень громоздкий, поэтому я выбрал лёгкий и бесплатный CodeBlocks.
открою тайну, но уже крякнуто всё, и везде. гугли.
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
14.02.2013, 08:39     Codeblocks > C++ #17
И, к тому же, под большим дапвлением народных масс мелкософт-таки включил в экспресс-версию VS 2012 возможность создавать десктопные приложения.
MrCold
14.02.2013, 08:47
  #18

Не по теме:

Цитата Сообщение от PreFX Посмотреть сообщение
VS 2012 возможность создавать десктопные приложения.
PreFX если не секрет, Windows Forms ?

PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
14.02.2013, 10:14     Codeblocks > C++ #19
Не являюсь обладателем экспресс-версии, но вот консольные там создавать точно можно. Может быть, WF тоже в комплекте.

Добавлено через 7 минут
Хм, сайт мелкософта ВНЕЗАПНО не грузится, но вот на википедии так и сформулировано: десктопные приложения. Вероятно, что WF всё-таки включены, так как различные варианты распространения VS различаются в основном всякими плюшками вроде юнит-тестов (которые, кстати, в VS 2012 Express включены), Microsoft SQL и командных проектов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 10:28     Codeblocks > C++
Еще ссылки по теме:

Code::Bloks C++, В чем разница "codeblocks-12.11-setup.exe" и "codeblocks-12.11mingw-setup.exe" C++
С++ CodeBlocks C++
C++ CodeBlocks 13.12 vs 10.05

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.02.2013, 10:28     Codeblocks > C++ #20
НА фиг вам 2012? Работайте c 2010 если уж так приспичило.
Yandex
Объявления
14.02.2013, 10:28     Codeblocks > C++
Ответ Создать тему
Опции темы

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