Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Почему разные редакторы компилируют программы разной величины?

Ответить
Настройки темы
Почему разные редакторы компилируют программы разной величины?

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120


Конфигурация

Профиль | Отправить PM | Цитировать


Я компилировал оди и тот же код 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)Есть ли какие то редакторы (то есть компиляторы), которые делает программу наименьшего размера??

Отправлено: 15:45, 03-06-2005

 
lehha


Сообщения: n/a

Профиль | Цитировать


vadimiron
Попробуй в настройках проекта в МС++6 поставить конфигурацию Release.

Отправлено: 16:00, 03-06-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата:
Попробуй в настройках проекта в МС++6 поставить конфигурацию Release.
Да, с релизом намного меньше, 36 кб, но всё равно Dev-C++ меньше: 22,7
Может есть компиляторы, которые ещё меньше делают?? Или есть для этого какие то другие методы??

-------
Fortes fortuna adiuvat


Отправлено: 16:11, 03-06-2005 | #3


Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


vadimiron
Самое радикальное - вырезать CRT (C Run-Time)
Добавляйте в начале:
Код: Выделить весь код
// Отключаем станд. библиотеки
#pragma comment(linker,"/NODEFAULTLIB")
// Объединяем секции кода и данных
#pragma comment(linker,"/MERGE:.rdata=.text")
// Уменьшаем выравнивание и разрешаем запись в секцию кода
// для VS.NET 2002 (у мну) - #pragma comment(linker,"/ALIGN:512 /SECTION:.text,EWRX")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
// Новая точка входа
#pragma comment(linker,"/ENTRY:NewWinMain")
воть, с подробностями - http://www.rsdn.ru/article/cpp/crt.xml

Последний раз редактировалось Savant, 03-06-2005 в 23:50.


Отправлено: 23:14, 03-06-2005 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


vadimiron
Кстати, вот чего мне интересно. У Вас в комплекте Dev-C++ 4.9.9.2 (Mingw/GCC) должна идти такая утилитка strip. Попробуйте, пожалуйста, прогнать через неё файлик, полученный в MVS. Какой после этого размер екзешника тогда будет?

Отправлено: 14:16, 06-06-2005 | #5


Аватара для McDAK

Модер


Сообщения: 830
Благодарности: 3

Профиль | Отправить PM | Цитировать


vadimiron
Существуют также различные упаковщики exe-файлов, наверное один из самых известных - UPX и прочие (ASPack, PEcompact)

-------
Знание некоторых принципов нередко возмещает незнание некоторых фактов. Гельвеций


Отправлено: 14:32, 06-06-2005 | #6


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Да, и ещё вопрос ко всем :]
У борланда когда-то была такая же утилитка - strip.
Ну в *никсах она есть. Есть даже sstrip ;] А у MVS аналог-то strip есть?
Чего-то я не могу найти :]

cvpack не узнаёт ключ /strip (хотя у меня vs 6.0)
rebase работает только с dll
Как быть?

Отправлено: 14:40, 06-06-2005 | #7


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата:
Кстати, вот чего мне интересно. У Вас в комплекте Dev-C++ 4.9.9.2 (Mingw/GCC) должна идти такая утилитка strip. Попробуйте, пожалуйста, прогнать через неё файлик, полученный в MVS. Какой после этого размер екзешника тогда будет?
Из 168 кб эта утилита сделала 160 кб, не очень то сильно уменьшила

-------
Fortes fortuna adiuvat


Отправлено: 19:34, 06-06-2005 | #8


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Мда, маловато будет [c]

Отправлено: 10:07, 07-06-2005 | #9

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. Обычно код программы получается совсем маленьким. Больше места занимают стандартные библиотеки. А ещё много места (относительно кода маленькой программы) занимает то, что вашу программу стартует (т.е. запускает main или WinMain), а потом чистит мусор. Если это линковать внешне, то получится гораздо меньший екзешник. Попробуйте только откомпилировать (не линковать) и сравнивайте, сколько весит *.obj или *.o (или как он увас называется).
2. Попробуйте отлинковать */GCC со статическими библиотеками, crt, stdc++lib и multithreading. Думаю, что код получится больше.
3. А потом, в релизе, код может оказаться больше, из-за таких вещей как i468 instruction set, MMX, align, sheduling, loop unrolling, inlining которые сильно ускоряют работу на современных ПК.
4. Мой совет: не смотрите на величину кода, а обращайте внимание на качество, скорость, сходство debug и release по функциональности и т.д. В больших программах это важнее.

Отправлено: 12:36, 10-06-2005 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Почему разные редакторы компилируют программы разной величины?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Почему долго ищутся программы в сети? Ferum01 Microsoft Windows NT/2000/2003 1 26-05-2009 01:43
Прочее - Разные права доступа у разных пользователей сети. Почему? viter_alex Сетевые технологии 1 27-02-2009 17:28
[решено] Есть оперативная память разной частоты! Что будет если... DJmustdie Материнские платы и память 4 20-02-2009 12:15
Разное - почему пропадает меню"все программы" segre Microsoft Windows 2000/XP 6 05-09-2007 19:03
Разные учетные записи-разные IP (WinXP) ILion Сетевые технологии 1 28-05-2003 10:48




 
Переход