|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Почему разные редакторы компилируют программы разной величины? |
|
|
Почему разные редакторы компилируют программы разной величины?
|
Ветеран Сообщения: 1864 |
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Цитата:
Может есть компиляторы, которые ещё меньше делают?? Или есть для этого какие то другие методы?? |
|
------- Отправлено: 16:11, 03-06-2005 | #3 |
Старожил Сообщения: 300
|
Профиль | Сайт | Отправить 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") |
Последний раз редактировалось Savant, 03-06-2005 в 23:50. Отправлено: 23:14, 03-06-2005 | #4 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать vadimiron
Кстати, вот чего мне интересно. У Вас в комплекте Dev-C++ 4.9.9.2 (Mingw/GCC) должна идти такая утилитка strip. Попробуйте, пожалуйста, прогнать через неё файлик, полученный в MVS. Какой после этого размер екзешника тогда будет? |
|
Отправлено: 14:16, 06-06-2005 | #5 |
Модер Сообщения: 830
|
Профиль | Отправить PM | Цитировать vadimiron
Существуют также различные упаковщики exe-файлов, наверное один из самых известных - UPX и прочие (ASPack, PEcompact) |
------- Отправлено: 14:32, 06-06-2005 | #6 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Да, и ещё вопрос ко всем :]
У борланда когда-то была такая же утилитка - strip. Ну в *никсах она есть. Есть даже sstrip ;] А у MVS аналог-то strip есть? Чего-то я не могу найти :] cvpack не узнаёт ключ /strip (хотя у меня vs 6.0) rebase работает только с dll Как быть? |
Отправлено: 14:40, 06-06-2005 | #7 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 19:34, 06-06-2005 | #8 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Мда, маловато будет [c]
|
Отправлено: 10:07, 07-06-2005 | #9 |
Ветеран Сообщения: 1180
|
Профиль | Отправить 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 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Почему долго ищутся программы в сети? | 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 |
|