Форум программистов, компьютерный форум 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
15.02.2013, 05:44  [ТС]     Codeblocks > C++ #41
Видимо, надо изучать С, а не С++. Терпеть не могу, искусственного раздутия программ.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
15.02.2013, 05:48     Codeblocks > C++ #42
kravam, например, не запустится, если не будет папки bin в переменной path. Так как, как я уже говорил, я не пользуюсь
Цитата Сообщение от kravam Посмотреть сообщение
mingw-get-inst-20120426.exe
, а использую сборки niXman`a, в которых компилятор идет в одном архиве. И в переменную path добавляю сам путь до папки bin, для возможности компиляции из командной строки и для IDE Netbeans. Просто, на сколько я помню, есть такие среды, которым нужно явно указывать в настройках, где находится компилятор, или нужно указать саму папку с компилятором в переменной path, и им не важна папка bin, пути до нее в переменной path может просто не быть. Вроде Eclipse такая.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
15.02.2013, 05:58     Codeblocks > C++ #43
Я над другим задумался. Получается с динамическим подсоединением фигня полная. Так, если я сделал динамическую компоновку, например 20-ти программ и использую их для себя а потом решил снести MinGW, они и не запустятся теперь что ли? Получается, мне щас все эти программы над искать и перекомпоновывать. Грязь какая-то...

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

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

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

Куда таскать? Комп один и тот же...
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
15.02.2013, 07:02  [ТС]     Codeblocks > C++ #46
Цитата Сообщение от kravam Посмотреть сообщение
да, но я-то говорю о случае, когда я как был за компом так за компом и остался.
Куда таскать? Комп один и тот же...
Нет, если программы для тебя, то можно и динамическими библиотеками пользоваться. Вообще решать тебе. Я имел ввиду, что если программ много, и они используют, много разных библиотек (часть функций будут висеть мёртвым грузом)?Или программы используют разные версии библиотек (будут конфликты)?Или программы для массового использования (надо таскать библиотеку)? Или использует много тяжеловесных динамических функций из разных библиотек (будут ужасные тормоза и перерасход оперативной памяти).
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
15.02.2013, 07:29     Codeblocks > C++ #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; как теперь программу запустить? Никак.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
15.02.2013, 07:33     Codeblocks > C++ #48
kravam, а на что по Вашему папка bin? Сохраняете куда нибудь все dll из нее в отдельную папку, и все. Их общий размер не превышает 3 мегабайт. У меня они занимают 2.68 mb. Всего их 7 штук.
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
15.02.2013, 12:46     Codeblocks > C++ #49
Я лучше об угол е...сь.
Лучше уж тогда в системную директорию закинуть и пусть лежат себе, полёживают. Так опять же кидать вручную. Эх, нет в жизни счастья.
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
16.02.2013, 00:39  [ТС]     Codeblocks > C++ #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
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
16.02.2013, 01:19     Codeblocks > C++ #51
12 dll-ок, имена которых известны, находящихся в ОДНОЙ папке перекидывать с помощью батника? Хотя у нас демократия, кто как хочет, тот так пусть и др делает.

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

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

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

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

Хотя может в readme.txt где-нибудь маленькими буквами на последней странице жёлтым цветом подобное предупреждение и написано: "при деинсталляции MinGW программы, скомпонованные без -static, работать не будут", я не знаю.
XiloManX
 Аватар для XiloManX
641 / 145 / 30
Регистрация: 11.02.2013
Сообщений: 274
16.02.2013, 03:10  [ТС]     Codeblocks > C++ #52
kravam Чего-то, я тебя не понял. Ты же говорил, что своими программами пользуешься только ты, тогда причём тут пользователи?

Добавлено через 9 минут
Цитата Сообщение от kravam Посмотреть сообщение
12 dll-ок, имена которых известны, находящихся в ОДНОЙ папке перекидывать с помощью батника? Хотя у нас демократия, кто как хочет, тот так пусть и др делает.
А батник никто и не навязывает. Ты стал говорить о перекидывании файлов вручную, вот я придложил батник, так как до этого, предлогал инстоллятор.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2013, 03:42     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
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
16.02.2013, 03:42     Codeblocks > C++ #53
Я обобщённо. Своими программами пользуюсь я, а MinGW пользуются все.
Yandex
Объявления
16.02.2013, 03:42     Codeblocks > C++
Ответ Создать тему
Опции темы

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