Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/48: Рейтинг темы: голосов - 48, средняя оценка - 4.60
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
#1

Codeblocks > C++

11.02.2013, 20:34. Просмотров 8634. Ответов 52
Метки нет (Все метки)

Привет, всем форумчанам! Решил научиться программировать на 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;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 20:34
Ответы с готовыми решениями:

C++ 14 в CodeBlocks
Делаю примеры из книги Страуструпа. Там используется vector,sort. CodeBlocks не...

Codeblocks c++
есть кнопка . Как сделать что бы при ее нажатие добавлялось по одному очку ? и...

CodeBlocks и Unicode
Здравствуйте!В CodeBlocks стандартная кодировка 1251. Мне нужна Unicode...

Ключи CodeBlocks
Помогите разобраться в секретах быстродействия. Вот у меня есть vector&lt;...

CodeBlocks код по умолчанию
Всем привет. Занимаюсь настройками CodeBlocks, и возник такой вот вопрос: как...

52
Tiva
94 / 94 / 21
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:41 #2
во-первых, смените debug на release, объем значительно уменьшится. к примеру ваша программа с 38кб уменьшилась до 9кб
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
11.02.2013, 20:44  [ТС] #3
Уже делал, и программа стала ~500kB, а должна быть меньше.
0
Tiva
94 / 94 / 21
Регистрация: 25.04.2012
Сообщений: 429
11.02.2013, 20:50 #4
Цитата Сообщение от XiloManX Посмотреть сообщение
Уже делал, и программа стала ~500kB, а должна быть меньше.
ну тогда это проблемы ide или компилятора, я точно не знаю.
кстати, разве обычно с++ не начинают изучать с visual studio?)
в vs2008 ехе весит 9кб(релиз) и 38кб(дебаг)
в builder (rad xe3) exe весит 169кб(релиз) и 170кб(дебаг)

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

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

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

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

Не по теме:

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

0
nonedark2008
11.02.2013, 21:32
  #8

Не по теме:


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

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

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

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

На счёт второго. Честно говоря не понемаю, как это влияет на размер, но да ладно.
На счёт третьего. Пробовал отключать соответсвуюшими ключами, но на размер, никак не повлеяло.
0
kravam
быдлокодер
1707 / 894 / 105
Регистрация: 04.06.2008
Сообщений: 5,527
13.02.2013, 06:08 #10
Цитата Сообщение от XiloManX Посмотреть сообщение
И если указать соответствующие ключи
ты про ключи-то договори...
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
13.02.2013, 06:44  [ТС] #11
А чё говорить-то. Уже все ссылки даны: и на подробную инструкцию (в ней написано, какие ключи надо внести в Code::Blocks), и на подробное описание ключей. Если не знешь заморский язык, тогда Google translate в помощь.
0
kravam
быдлокодер
1707 / 894 / 105
Регистрация: 04.06.2008
Сообщений: 5,527
13.02.2013, 06:48 #12
тебе западло что ли ключи написать?
1
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
13.02.2013, 07:02  [ТС] #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++
0
kravam
быдлокодер
1707 / 894 / 105
Регистрация: 04.06.2008
Сообщений: 5,527
13.02.2013, 08:02 #14
я английский не знаю просто
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
13.02.2013, 08:10  [ТС] #15
Цитата Сообщение от kravam Посмотреть сообщение
я английский не знаю просто
А Google translate, на что?
0
Tiva
94 / 94 / 21
Регистрация: 25.04.2012
Сообщений: 429
14.02.2013, 06:22 #16
Цитата Сообщение от XiloManX Посмотреть сообщение
Да, но Visual Studio платный и очень громоздкий, поэтому я выбрал лёгкий и бесплатный CodeBlocks.
открою тайну, но уже крякнуто всё, и везде. гугли.
0
PreFX
25 / 20 / 2
Регистрация: 14.07.2012
Сообщений: 176
14.02.2013, 08:39 #17
И, к тому же, под большим дапвлением народных масс мелкософт-таки включил в экспресс-версию VS 2012 возможность создавать десктопные приложения.
0
MrCold
14.02.2013, 08:47
  #18

Не по теме:

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

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

Добавлено через 7 минут
Хм, сайт мелкософта ВНЕЗАПНО не грузится, но вот на википедии так и сформулировано: десктопные приложения. Вероятно, что WF всё-таки включены, так как различные варианты распространения VS различаются в основном всякими плюшками вроде юнит-тестов (которые, кстати, в VS 2012 Express включены), Microsoft SQL и командных проектов.
0
kravam
быдлокодер
1707 / 894 / 105
Регистрация: 04.06.2008
Сообщений: 5,527
14.02.2013, 10:28 #20
НА фиг вам 2012? Работайте c 2010 если уж так приспичило.
0
14.02.2013, 10:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 10:28

Настройка отладчика в CodeBlocks
Здравствуйте, очень хотелось бы получить совет по следующей проблеме, а...

Codeblocks и параметры запуска
В общем-то столкнулся с проблемой. Не могу найти в C::B, как заставить...

CodeBlocks черный цвет фона
Привет ,как в Codeblocks задать черный бэкграунд, ну и подходящие шрифты и...


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

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

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