Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > [C++]Размер файла после подключения fstream.h |
Автор: qwerty789 22.1.2008, 13:44 |
Привет, использовал в программе ifstream из fstream.h и размер скомпилированого файла сразу увеличился в 10 раз примерно... Код приводить не стал, так как в любом случае при использовании чего то из iostream, ifsteam размер собранной программы увеличивается очень сильно. Компилятор использовался gcc 4.2.1. Вообщем хотелось бы узнать из за чего это происходит и как избежать такого увеличения... |
Автор: qwerty789 22.1.2008, 15:04 |
Параметры -s и -Os |
Автор: bsa 22.1.2008, 15:04 |
Скорее всего добавился отладочный код - от него программа сильно разбухает. Добавлено через 2 минуты и 37 секунд qwerty789, ты всю строку компиляции приведи. |
Автор: qwerty789 22.1.2008, 15:10 |
А как это можно проверить? -s параметр должен вырезать отладочный код... Среда codeblocks... Добавлено через 13 минут и 53 секунды Я через ide компилирую...где мне посмотреть остальные параметры? |
Автор: JackYF 22.1.2008, 15:37 |
в настройках компилятора там есть пункт - "показывать всю командную строку компиляции". Вот выбери её, и дай нам. А вообще в кодеблоках ставишь релизную сборку - оно само -s и -Ox поставит. Добавлено через 1 минуту и 28 секунд ![]() |
Автор: qwerty789 22.1.2008, 16:31 |
-------------- Сборка: Release --------------- mingw32-g++.exe -Wall -Wall -O3 -IC:\MinGW\bin -c C:\CodeBlocks\Projects\main\main.cpp -o obj\Release\main.o mingw32-g++.exe -LC:\MinGW\bin -o bin\Release\main.exe obj\Release\main.o -s -s -s C:\MinGW\lib\libws2_32.a Output size is 261,00 KB Вот полная строка... |
Автор: JackYF 22.1.2008, 16:36 |
qwerty789, 261 килобайт - это много? |
Автор: qwerty789 22.1.2008, 16:40 |
Было 20кб, может я конечно чего то не понимаю... =) |
Автор: Dronchik 22.1.2008, 16:51 |
JackYF, это конешно оффтоп но есть такая операционка, ты о ней уверен что слышал. Я про Колибри говорю. Так там всё гдета по 10 клиобайт стоит. qwerty789, Перепроверь подключаемые библиотеки. Я под gcc не сидел но в Visual C++ 6 я для уменьшения размера иногда проверяю и коментирую на время некоторые части в заголовочных стандартных файлах специально для проги. Просмотри ifstream, какая функция может занять столько места. И закоментируй её(если конешно не будешь использовать). |
Автор: qwerty789 22.1.2008, 16:55 |
Спасибо, попробую сегодня...чуть позже отпишу результат... |
Автор: bsa 22.1.2008, 16:59 |
попробуй еще ключ -g0 |
Автор: JackYF 22.1.2008, 17:09 |
а есть ещё операционка, GNU/Linux называется. Так там много компилируется динамически, и маленькие программки тоже маленькие. А есть всё писать на ассемблере, тогда да, бинарники маленькие будут. Только это капец, извините, с точки зрения архитектуры. |
Автор: qwerty789 22.1.2008, 17:52 | ||
ничего не изменилось... |
Автор: MAKCim 22.1.2008, 18:04 |
вот это очень похоже на статическую библиотеку, которая может быть большой из-за чего и раздувается исполняемый файл |
Автор: qwerty789 22.1.2008, 18:13 |
не, если закомментировать код который использует fstream.h то будет 20кб...вместе с этой библиотекой... |
Автор: archimed7592 22.1.2008, 19:08 |
0_о Ок, отбросим "детские" IDE'шки. Те с которыми мне сейчас частенько приходится работать: MSVS и Eclipse. Обе лишены этих недостатков. Думаю, что многие другие IDE также не имеют подобного недостатка. По теме: какие ключики не указывай, с mingw-gcc-3.4.x 10-20 КБ не получишь. Можно, как вариант, попробовать GCC-4.2 technology preview 2, в которой есть возможность собирать вместе с динамической CRTL(но я бы поостерёгся - всё таки TP), либо собрать STLport в виде дин. либы, и использовать её, но, что там, что там ты получишь малюсенькую программку и огромную dll'ку, т.е., по сути, разницы не будет, точнее она будет, если у тебя в одной папке будет лежать сотня программ. |
Автор: JackYF 22.1.2008, 20:17 | ||
хм... и ту и другую я уже давненько не видел... они показывают полные командные строки компиляции? а мэйкфайлы генерить позволяют, чтоб можно было скомпилить без наличия графической оболочки? если да, тогда не все. |
Автор: qwerty789 22.1.2008, 20:21 |
Использование dll выходом не считаю в данном случае... Cейчас скомпилировал прогу в билдере, получилось 39кб... Не мог же я первый столкнуться с этим вопросом =) |
Автор: archimed7592 22.1.2008, 20:23 | ||
Что сейчас в моде у линуксоидов? ![]() Угумс.
Добавлено через 3 минуты и 4 секунды Угу, и ей требуется какой-нибудь bcbrtl60, да? ![]() Это и называется "маленькая прога + большая dll". MSVC - аналогично: требуется msvcrt80.dll. Ну, а когда делаешь так, чтобы ничего не требовалось, то получается как раз вот такие "большие программы". |
Автор: TaNK 23.1.2008, 09:13 | ||
Занимает 34,5 кБ IDE С++ Builder 6 |
Автор: archimed7592 23.1.2008, 09:21 |
TaNK, заархивируй и приатач .exe файл. |
Автор: TaNK 23.1.2008, 11:00 |
лови |
Автор: archimed7592 23.1.2008, 11:14 |
Лови: http://ipicture.ru/Gallery/Viewfull/378769.html Посчитай теперь размер файлов, которые выделены красными прямоугольниками(спешу огорчить: у меня твой project2 не запускается). А лучше прочитай внимательней этот http://forum.vingrad.ru/index.php?showtopic=192450&view=findpost&p=1388735(конец). К слову, STLPMT45 - это тот самый STLport в виде .dll о котором я и говорил(в билдере родной STL является именно древний STLport). |
Автор: TaNK 23.1.2008, 11:33 |
archimed7592 - я подумал что у qwerty789 файл увиличивается в 10 раз только при использовании ifstream, а у меня конечно в exe-файл не были добавлены все *.bpl и dll |
Автор: JackYF 23.1.2008, 11:45 |
![]() vim ![]() |
Автор: archimed7592 23.1.2008, 11:56 |
Я понимаю, когда emacs IDE обзывают, но vim - это же редактор с подсветкой... Или я глубоко заблуждаюсь? |
Автор: bsa 23.1.2008, 11:59 | ||
мне рассказывали, что из него можно запустить make одной клавишей ![]() |
Автор: JackYF 23.1.2008, 13:12 |
ну как сказать... авдополнение - есть. С member selection я ещё не разобрался, но тоже есть ![]() забиндить можно любую команду на любое сочетание ![]() я запускаю через ":mak". Конечно, сие далеко не полноценная IDE... Но то, что он позволяет делать, он делает быстро и гибко. Привыкнуть надо малёхо, конечно ![]() |
Автор: archimed7592 23.1.2008, 13:22 | ||
В общем, как и emacs - это многофункциональный редактор(я склонен называть такие вещи именно так ![]() Добавлено через 2 минуты и 41 секунду
|
Автор: qwerty789 23.1.2008, 17:16 | ||||
Интересно конечно почитать вашу беседу, но я спрашивал конкретно про то что, при компиляции gcc например вот этого
Получается -------------- Сборка: Release в testtt --------------- mingw32-g++.exe -Wall -O2 -O3 -IC:\MinGW\bin -c C:\CodeBlocks\Projects\testtt\main.cpp -o obj\Release\main.o mingw32-g++.exe -LC:\MinGW\bin -o bin\Release\testtt.exe obj\Release\main.o -s -s Output size is 257,00 KB Получается не маленький размер... Добавлено через 2 минуты и 13 секунд При использовании чегонибудь из fstream.h, такой же размер примерно... Добавлено через 8 минут и 49 секунд а если так сделать, то совсем другой размер...
-------------- Сборка: Release в testtt --------------- mingw32-g++.exe -Wall -O2 -O3 -IC:\MinGW\bin -c C:\CodeBlocks\Projects\testtt\main.cpp -o obj\Release\main.o mingw32-g++.exe -LC:\MinGW\bin -o bin\Release\testtt.exe obj\Release\main.o -s -s Output size is 5,50 KB |
Автор: archimed7592 23.1.2008, 17:53 |
Дело в том, что, в том или ином виде, почти всю ф-циональность стандартной библиотеки Си реализует msvcrt.dll(которая, надо понимать, есть в любой винде), на которую, в свою очередь идут ссылки из получаемого бинарника. Что же касается C++RTL - там не всё так просто, и поэтому большая часть кода дислоцируется в вашем бинарнике(в данном случае). |
Автор: jmp 24.1.2008, 05:21 |
qwerty789, мда, вот в ВС2005 у меня тоже получались еХешники на 10 кб, но и у половины пользователей отказыввались запускаться....впринципе я не "ропщу" на MingW уж лучше 300кб и 100% работоспособность, чем 5кб и ошибка вида "Приложению не удалось запуститься поскольку оно некорректно настроено" у всех кто не ставил Visual C++ Redistributable Package.. |
Автор: JackYF 24.1.2008, 10:15 | ||
Отлично сказано. |
Автор: Dronchik 24.1.2008, 16:35 | ||
Dev C++ 4,9,9,1 - 468 кб. MS Visual C++ 6 SP5 - 216 кб. Компилировал без какой либо оптимизации компилятором.
![]() |
Автор: qwerty789 24.1.2008, 20:33 |
Всем спасибо за активное участие в моем обучении ![]() |