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

C++: IDE, инструментарий

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 53, средняя оценка - 4.83
XiloManX
642 / 146 / 31
Регистрация: 11.02.2013
Сообщений: 277
#1

Codeblocks > C++ - C++ IDE

11.02.2013, 20:34. Просмотров 7633. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Codeblocks > C++ (C++ IDE):

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

CodeBlocks и Unicode - C++ IDE
Здравствуйте!В CodeBlocks стандартная кодировка 1251. Мне нужна Unicode кодировка. В Edit-&gt;File Encoding указываю любую из Unicode...

Ключи CodeBlocks - C++ IDE
Помогите разобраться в секретах быстродействия. Вот у меня есть vector&lt; vector&lt;double&gt; &gt; *Y; Y = new vector&lt; vector&lt;double&gt; &gt;; ...

Настройка отладчика в CodeBlocks - C++ IDE
Здравствуйте, очень хотелось бы получить совет по следующей проблеме, а именно: когда я запускаю отладку файла, то все идет нормально,...

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

Странности с wxWidgets и CodeBlocks и с Boost - C++ IDE
Я совсем в программировании новичок. Помогите разобраться. Скачал либы wxWidgets и Boost. Собрал c помощью GCC под windows. ...

52
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
14.02.2013, 06:22 #16
Цитата Сообщение от XiloManX Посмотреть сообщение
Да, но Visual Studio платный и очень громоздкий, поэтому я выбрал лёгкий и бесплатный CodeBlocks.
открою тайну, но уже крякнуто всё, и везде. гугли.
0
PreFX
25 / 20 / 1
Регистрация: 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 / 1
Регистрация: 14.07.2012
Сообщений: 176
14.02.2013, 10:14 #19
Не являюсь обладателем экспресс-версии, но вот консольные там создавать точно можно. Может быть, WF тоже в комплекте.

Добавлено через 7 минут
Хм, сайт мелкософта ВНЕЗАПНО не грузится, но вот на википедии так и сформулировано: десктопные приложения. Вероятно, что WF всё-таки включены, так как различные варианты распространения VS различаются в основном всякими плюшками вроде юнит-тестов (которые, кстати, в VS 2012 Express включены), Microsoft SQL и командных проектов.
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,473
14.02.2013, 10:28 #20
НА фиг вам 2012? Работайте c 2010 если уж так приспичило.
0
MrCold
14.02.2013, 10:32
  #21

Не по теме:


А, ясно,
ну Гугл говорит что Windows Forms для С++ там нет,
только для VB и C#
поэтому поинтересовался

0
XiloManX
642 / 146 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 02:06  [ТС] #22
Цитата Сообщение от Tiva Посмотреть сообщение
Цитата Сообщение от XiloManX
Да, но Visual Studio платный и очень громоздкий, поэтому я выбрал лёгкий и бесплатный CodeBlocks.
открою тайну, но уже крякнуто всё, и везде. гугли.
Это не тайна, я это и так знаю. А ты видел слово громоздкий? И тут дело не в памяти, просто не люблю искуственно раздутые программы, да и ещё платные.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.02.2013, 02:21 #23
Ребят, по правилам запрещено обсуждать "варез". А так - в любом случае исполняемый файл в Win у MinGW будет больше, нежели у MS. Компилятор Microsoft бесплатный, платна сама IDE в основном. Компилятор входит в пакет windows sdk, который легко можно скачать. И, вроде, некоторые IDE поддерживают MS компилятор. Тот же Code::Blocks.
0
XiloManX
642 / 146 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 03:04  [ТС] #24
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вчера поигрался с Code::Blocks, и понял, почему получается такой большой исполняемый файл, на выходе, по мимо тех причин, о которых я писал ранее. Как оказалось, стабильная "Code::Blocks v12.11" со встроенным компилятором MinGW, содержит нестабильную версию компилятора из ночной сборки. Видимо сборщик этого компилятора, либо где-то сделал ошибку и компилятор просто записывал какой-то мусор, либо сделал так, что-бы по умолчанию, при компиляции, подключались какие-то библиотеки. А может дело в библиотеках, которые поставляются с компилятором.

Вообшем, я попробовал сделать раздельную установку (установил: отдельно Code::Blocks v12.11, отдельно компилятор MinGW 20120426). Компилятор установил в ту же директорию, куда установился Code::Blocks, и указал пути к компилятору MinGW и отладчику GDB, в настройках Code::Blocks.

И оказалось следующее:
1. После компиляции в отладочном режиме (Debug), исполняемый файл имеет размер 57.26 kB.
2. После компиляции в облегчённом режиме (Release), исполняемый файл имеет размер 8.50 kB.
3. Никаких ключей в Code::Blocks, выставлять не надо, чтобы добиться того же результата.
4. Не надо перемещать компилятор, в директорию без пробелов, чтобы иметь возможность компилировать программы. Потому как, та версия компилятора MinGW, которая идёт с "Code::Blocks v12.11" по умолчанию, не воспринемает путь к компилятору с пробелами, из-за чего, не компилируютя программы.
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,473
15.02.2013, 03:12 #25
Цитата Сообщение от XiloManX Посмотреть сообщение
2. После компиляции в облегчённом режиме (Release), исполняемый файл имеет размер 8.50 kB.
а командная строка в этом случае какая?
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.02.2013, 03:13 #26
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
XiloManX, Это с динамической компоновкой. В любой другой папке, отличной от той, в которой исполняемый файл находится сейчас, он, возможно, не запустится. Придется таскать DLL от MinGW за ней, или использовать статическую компоновку. Скорей всего в той версии, про которую Вы говорите, статическая компоновка была по умолчанию, либо просто не было динамической библиотеки, поэтому компоновка шла сразу статическая. Если Вы добавите флаг -static, что бы не таскать DLL с программой, то размер опять увеличится до 500 kb.
Для эксперимента, попробуйте переименовать или переместить на время файл libstdc++-6.dll в папке bin компилятора.
1
XiloManX
642 / 146 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 03:39  [ТС] #27
Цитата Сообщение от Toshkarik Посмотреть сообщение
И, вроде, некоторые IDE поддерживают MS компилятор. Тот же Code::Blocks.
Может и поддерживают, но у меня лично, откампилировать программу в Code::Blocks, с подключённым компилятором Visual C++, не получилось. И потом, мне больше нравится компилятор GCC. Превычней, так как, доводилось с ним работать.

Добавлено через 8 минут
Цитата Сообщение от kravam Посмотреть сообщение
а командная строка в этом случае какая?
А что имеется ввиду, под командной строкой? "Build Log" что ли?

Добавлено через 11 минут
Цитата Сообщение от Toshkarik Посмотреть сообщение
XiloManX, Это с динамической компоновкой. В любой другой папке, отличной от той, в которой исполняемый файл находится сейчас, он, возможно, не запустится. Придется таскать DLL от MinGW за ней, или использовать статическую компоновку. Скорей всего в той версии, про которую Вы говорите, статическая компоновка была по умолчанию, либо просто не было динамической библиотеки, поэтому компоновка шла сразу статическая. Если Вы добавите флаг -static, что бы не таскать DLL с программой, то размер опять увеличится до 500 kb.
Для эксперимента, попробуйте переименовать или переместить на время файл libstdc++-6.dll в папке bin компилятора.
Может быть. Сейчас попробую.

Вот только я не понемаю, неужели нельзя сделать статическое подключение функций из библиотеки, по отдельности.
То есть, только тех, которые находятся в исходнике. На Ассемблере - это делается элементарно, а вот на C/C++, как-то через ж..пу. Какой смысл таскать всю библиотеку (статическую), в одном исполняемом файле с функциями, которыми никогда не воспользуешься?
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.02.2013, 03:45 #28
XiloManX, Все так и есть, в файле не обязательно хранится код функций, там так же могут хранится таблицы символов, используемые, в основном, для отладки. В gcc есть ключ, к примеру, - -s. Он удаляет эти таблицы, значительно уменьшая размер исполняемого файла.
0
XiloManX
642 / 146 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 03:50  [ТС] #29
Цитата Сообщение от Toshkarik Посмотреть сообщение
XiloManX, Все так и есть, в файле не обязательно хранится код функций, там так же могут хранится таблицы символов, используемые, в основном, для отладки. В gcc есть ключ, к примеру, - -s. Он удаляет эти таблицы, значительно уменьшая размер исполняемого файла.
А ты читал тему сначала? Я об этом уже писал. Только не писал ключ, потому что он, стоит по умолчанию в Code::Blocks, в облегчённом режиме (Release),
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
15.02.2013, 04:00 #30
Цитата Сообщение от XiloManX Посмотреть сообщение
А ты читал тему сначала?
Да, читал.

Учитывайте еще, что cout это объект класса, который может состоять из объектов других классов. Компилятор не может просто так взять, и выкинуть функцию-член класса. Сравните, например, размер исполняемого файла такого кода:
C++
1
2
3
4
5
6
7
#include <cstdio>
 
 
int main() {
   printf( "Hello World!!!" );
   return 0;
}
В статической компоновке, файл занимает, по крайней мере у меня, 36kb, против 678kb с использованием объекта std::cout.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2013, 04:00
Привет! Вот еще темы с ответами:

Дайте совет по связке wxWidgets+codeblocks - C++ IDE
Хочу попробовать создание программы с оконным интерфейсом. С горем пополам связку wxWidgets+codeblocks завел. Стартовое приложение с формой...

Как поменять кодировку символов в CodeBlocks - C++ IDE
Ребята, пожалуйста, помогите, чтобы работала моя программа, я должен с Unicode кодировки перейти на Шестнадцатиричную, но не знаю как это...

Непонятки в Visual studio express 2012 и CodeBlocks - C++ IDE
Когда шаг доходит до cin, во время отладки, то перекидывает в библиотеку iostream, как я понимаю. Далее, нужно довольно долго жать f11,...

Удаление Codeblocks/ - C++
После удаления Codeblocks значки *.cpp отображаются так. как будто Codeblocks установлен. Как правильно удалить эту программу? Одним...


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

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

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