Почему разные редакторы компилируют программы разной величины?
Я компилировал оди и тот же код WIN-API на Visual C++ 6.0 и на (бесплатном) Dev-C++ 4.9.9.2 (Mingw/GCC), так программа на первом получилась 168 кб, а на Dev-C++ всего 23 кб.
1)Почему такая разница?? Может Visual C++ 6.0 создаёт более качественный машинный код?? 2)Может есть какие то настройки для влияния на размер компилируемой программы?? 3)Есть ли какие то редакторы (то есть компиляторы), которые делает программу наименьшего размера?? |
vadimiron
Попробуй в настройках проекта в МС++6 поставить конфигурацию Release. |
Цитата:
Может есть компиляторы, которые ещё меньше делают?? Или есть для этого какие то другие методы?? |
vadimiron
Самое радикальное - вырезать CRT (C Run-Time) Добавляйте в начале: Код:
// Отключаем станд. библиотеки |
vadimiron
Кстати, вот чего мне интересно. У Вас в комплекте Dev-C++ 4.9.9.2 (Mingw/GCC) должна идти такая утилитка strip. Попробуйте, пожалуйста, прогнать через неё файлик, полученный в MVS. Какой после этого размер екзешника тогда будет? |
vadimiron
Существуют также различные упаковщики exe-файлов, наверное один из самых известных - UPX и прочие (ASPack, PEcompact) |
Да, и ещё вопрос ко всем :]
У борланда когда-то была такая же утилитка - strip. Ну в *никсах она есть. Есть даже sstrip ;] А у MVS аналог-то strip есть? Чего-то я не могу найти :] cvpack не узнаёт ключ /strip (хотя у меня vs 6.0) rebase работает только с dll Как быть? |
Цитата:
|
Мда, маловато будет [c]
|
1. Обычно код программы получается совсем маленьким. Больше места занимают стандартные библиотеки. А ещё много места (относительно кода маленькой программы) занимает то, что вашу программу стартует (т.е. запускает main или WinMain), а потом чистит мусор. Если это линковать внешне, то получится гораздо меньший екзешник. Попробуйте только откомпилировать (не линковать) и сравнивайте, сколько весит *.obj или *.o (или как он увас называется).
2. Попробуйте отлинковать */GCC со статическими библиотеками, crt, stdc++lib и multithreading. Думаю, что код получится больше. 3. А потом, в релизе, код может оказаться больше, из-за таких вещей как i468 instruction set, MMX, align, sheduling, loop unrolling, inlining которые сильно ускоряют работу на современных ПК. 4. Мой совет: не смотрите на величину кода, а обращайте внимание на качество, скорость, сходство debug и release по функциональности и т.д. В больших программах это важнее. |
Для интересующихся, с примером:
http://www.uinc.ru/articles/28/ |
по поводу примера (а особенно объяснений к нему), когда я читала эту статью, как раз писала программу работы со звуковой карточкой. Ну и попробовала скомпилячить ее таким образом (с ручной доделкой интерфейса, естественно). Так вот весь этот проигрыватель, который под Borland Builder весил совсем не мало, и на VC без ухищрений, соответственно тоже, тут (на VC по методе статьи) стал не больше 8 Kb (если правильно помню). При этом там было все честь по чести: окно, меню, даже модальное about :)
|
Время: 19:34. |
Время: 19:34.
© OSzone.net 2001-