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

Codeblocks > C++ - C++ IDE

11.02.2013, 20:34. Просмотров 8571. Ответов 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
Делаю примеры из книги Страуструпа. Там используется vector,sort. CodeBlocks не...

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

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

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

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

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

52
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 05:44  [ТС] #41
Видимо, надо изучать С, а не С++. Терпеть не могу, искусственного раздутия программ.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
15.02.2013, 05:48 #42
kravam, например, не запустится, если не будет папки bin в переменной path. Так как, как я уже говорил, я не пользуюсь
Цитата Сообщение от kravam Посмотреть сообщение
mingw-get-inst-20120426.exe
, а использую сборки niXman`a, в которых компилятор идет в одном архиве. И в переменную path добавляю сам путь до папки bin, для возможности компиляции из командной строки и для IDE Netbeans. Просто, на сколько я помню, есть такие среды, которым нужно явно указывать в настройках, где находится компилятор, или нужно указать саму папку с компилятором в переменной path, и им не важна папка bin, пути до нее в переменной path может просто не быть. Вроде Eclipse такая.
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
15.02.2013, 05:58 #43
Я над другим задумался. Получается с динамическим подсоединением фигня полная. Так, если я сделал динамическую компоновку, например 20-ти программ и использую их для себя а потом решил снести MinGW, они и не запустятся теперь что ли? Получается, мне щас все эти программы над искать и перекомпоновывать. Грязь какая-то...

А использовать -static... А тогда возникает вопрос- а зачем ВООБЩЕ нужна динамическая компоновка? Чисто для проформы- вот смотрите типа, она есть. Только она бесполезна.

А и выход-то из положения- всего-навсего заставить установщик распихивать библиотеки по системным директориям.
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 06:34  [ТС] #44
Цитата Сообщение от kravam Посмотреть сообщение
Я над другим задумался. Получается с динамическим подсоединением фигня полная. Так, если я сделал динамическую компоновку, например 20-ти программ и использую их для себя а потом решил снести MinGW, они и не запустятся теперь что ли? Получается, мне щас все эти программы над искать и перекомпоновывать. Грязь какая-то...
А использовать -static... А тогда возникает вопрос- а зачем ВООБЩЕ нужна динамическая компоновка? Чисто для проформы- вот смотрите типа, она есть. Только она бесполезна.
А и выход-то из положения- всего-навсего заставить установщик распихивать библиотеки по системным директориям.
На сколько я знаю, динамические библиотеки, сделаны для уменьшения размера программ, и экономии пространства на диске. То есть динамические библиотеки, выступают в роли помойки, в которой много всего, можно всем пользоваться, но ничего нельзя брать с собой. А программы - это нищеброды: приходят, попользуются и уходят.

А вообще, я тоже не очень люблю динамические библиотеки. По нескольким причинам:
1. При запуске программы, создаются сильные тормоза и съедается много памяти.
2. Куча библиотек, с ненужным набором функций, которыми я никогда не воспользуюсь. Все эти библиотеки будут висеть мёртвым грузом. И что олучается? Библиотеки сделаны для экономии пространства, но на самом деле, они ничего не экономят.
3. Чтобы запустить одну программу размером 10Мб, надо таскать с собой тонну библиотек размером, как минимум в несколько сотен мегобайт, а то и больше.
4. Плюс DLL Hell.
Цитата Сообщение от kravam Посмотреть сообщение
Получается с динамическим подсоединением фигня полная. Так, если я сделал динамическую компоновку, например 20-ти программ и использую их для себя а потом решил снести MinGW, они и не запустятся теперь что ли? Получается, мне щас все эти программы над искать и перекомпоновывать. Грязь какая-то...
Но тут есть только три варианта:либо таскать DLL с собой, либо сделать инстоллятор, который будет автоматически устанавливать программу, либо сделать статическую компановку.
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
15.02.2013, 06:45 #45
Цитата Сообщение от XiloManX Посмотреть сообщение
Но тут есть только три варианта:либо таскать DLL с собой, либо сделать инстоллятор, который будет автоматически устанавливать программу, либо сделать статическую компановку.
да, но я-то говорю о случае, когда я как был за компом так за компом и остался.

Куда таскать? Комп один и тот же...
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
15.02.2013, 07:02  [ТС] #46
Цитата Сообщение от kravam Посмотреть сообщение
да, но я-то говорю о случае, когда я как был за компом так за компом и остался.
Куда таскать? Комп один и тот же...
Нет, если программы для тебя, то можно и динамическими библиотеками пользоваться. Вообще решать тебе. Я имел ввиду, что если программ много, и они используют, много разных библиотек (часть функций будут висеть мёртвым грузом)?Или программы используют разные версии библиотек (будут конфликты)?Или программы для массового использования (надо таскать библиотеку)? Или использует много тяжеловесных динамических функций из разных библиотек (будут ужасные тормоза и перерасход оперативной памяти).
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
15.02.2013, 07:29 #47
Цитата Сообщение от XiloManX Посмотреть сообщение
Нет, если программы для тебя, то можно и динамическими библиотеками пользоваться.
что значит "можно динамическими библиотеками пользоваться?"

Вот ситуация- я написал
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
, динамически скомпилил, а потом снёс MinGW; как теперь программу запустить? Никак.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
15.02.2013, 07:33 #48
kravam, а на что по Вашему папка bin? Сохраняете куда нибудь все dll из нее в отдельную папку, и все. Их общий размер не превышает 3 мегабайт. У меня они занимают 2.68 mb. Всего их 7 штук.
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
15.02.2013, 12:46 #49
Я лучше об угол е...сь.
Лучше уж тогда в системную директорию закинуть и пусть лежат себе, полёживают. Так опять же кидать вручную. Эх, нет в жизни счастья.
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
16.02.2013, 00:39  [ТС] #50
Цитата Сообщение от kravam Посмотреть сообщение
Лучше уж тогда в системную директорию закинуть и пусть лежат себе, полёживают. Так опять же кидать вручную. Эх, нет в жизни счастья.
А зачем их кидать вручную? Есть же пакетные файлы (.BAT). Пишешь команду, далее указываешь директорию - откуда копировать, и директорию - куда копировать. И всего делов.

Вот пример (копирование) (для Windows):
chdir C:\MinGW\bin\
copy libstdc++-6.dll C:\WINDOWS\system32\libstdc++-6.dll
pause
Вот пример (перемещение) (для Windows):
chdir C:\MinGW\bin\
move libstdc++-6.dll C:\WINDOWS\system32\libstdc++-6.dll
pause
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
16.02.2013, 01:19 #51
12 dll-ок, имена которых известны, находящихся в ОДНОЙ папке перекидывать с помощью батника? Хотя у нас демократия, кто как хочет, тот так пусть и др делает.

Я другое имел ввиду. Вот например, установщик GIMP- Это же он наверное запихал свои dll-ки в системную директорию не спросясь. Вот это я и называю невручную.

Правда, тут есть одно но- некоторым может это не понравится. Типа почему какая-то левая программа распоряжается системными директориями. А тогда при удалении деинсталлятор пусть спрашивает- оставить dll-ки в системной директории или нет (мы предполагаем, что он их туда поставит)

С gimp-ом такой вариант может не прокатить. Потому что пользователи gimp могут и не знать, что такое системная директория. А пользователи MinGW знают, поэтому я при деинсталляции последнего ставлю галку напротив "сохранить dll-ки в системных директориях", удаляю MinGW и работаю себе спокойно с программами, которые создались при помощи динамической компоновки (а, следовательно, занимают немного места) ибо необходимые dll-ки сохранились; чем не вариант?

И это правильно не только потому, что это меньше движений для пользователя. Типа мне лень. Ни хрена. Щас-то как обстоят дела- я ведь и знать не знаю, что работоспособность моих программ напрямую зависит от наличия ГДЕ-ТО ТАМ dll-ок. Ладно я щас узнал. А если бы не узнал? Нехорошо это со стороны производителей MinGW, крайне нехорошо.

Хотя может в readme.txt где-нибудь маленькими буквами на последней странице жёлтым цветом подобное предупреждение и написано: "при деинсталляции MinGW программы, скомпонованные без -static, работать не будут", я не знаю.
0
XiloManX
643 / 147 / 31
Регистрация: 11.02.2013
Сообщений: 277
16.02.2013, 03:10  [ТС] #52
kravam Чего-то, я тебя не понял. Ты же говорил, что своими программами пользуешься только ты, тогда причём тут пользователи?

Добавлено через 9 минут
Цитата Сообщение от kravam Посмотреть сообщение
12 dll-ок, имена которых известны, находящихся в ОДНОЙ папке перекидывать с помощью батника? Хотя у нас демократия, кто как хочет, тот так пусть и др делает.
А батник никто и не навязывает. Ты стал говорить о перекидывании файлов вручную, вот я придложил батник, так как до этого, предлогал инстоллятор.
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
16.02.2013, 03:42 #53
Я обобщённо. Своими программами пользуюсь я, а MinGW пользуются все.
0
16.02.2013, 03:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2013, 03:42
Привет! Вот еще темы с решениями:

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

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

Странности с wxWidgets и CodeBlocks и с Boost
Я совсем в программировании новичок. Помогите разобраться. Скачал либы...

Узнать версию компилятора в CodeBlocks
Хотел проверить версию компилятора, но когда открываю gcc.exe выдает ошибку.


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

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

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