Название: Уменьшение размера программ в Mingw Отправлено: Nexor от Июнь 29, 2004, 11:29 Привет !
А каким образом можно отключить runtime в gcc (mingw) под win32 ? Я пробовал задавать линкеру параметры -nostartfiles -nodefaultlibs -nostdlib. Программа компилируется с сообщением ld: warning: cannot find entry symbol _mainCRTStartup; Параметр -entry WinMain здесь не помогает. Непонятно, как задать свою точку входа. В VC++ это делается так: cl test.cpp user32.lib /link /entry:WinMain Текст программы : (При отключенном runtime - прога выдает ошибку при запуске) #include <windows.h> int STDCALL WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) { MessageBox (NULL, "Test message", "Test", MB_OK); return 0; } Название: Уменьшение размера программ в Mingw Отправлено: yurror от Март 02, 2007, 04:20 Nexor, тебе вирусы писать чтоли?
Название: Re: Уменьшение размера программ в Mingw Отправлено: trupca от Июль 28, 2008, 19:41 так что, yurror, ждать от вас ответа? а то вы вроде знаете как это сделать. это с вашего смелого завления.
ну а на счёт вашего вопроса к Nexor'у, то думаю что ему, как и мне, неприятно нести лишних 400кб runtime'а, который едвали нужен при использовании winapi. и так, с чего я сделал up этой темы - интересуюсь сабжем, точнее почему-же один и тот же код под g++(linux) и mingw(windows) имеет разницу в 400 кубов? спасибо за внимание. ide code::blocks, компилятор из штатной поставки ide (mingw). Название: Re: Уменьшение размера программ в Mingw Отправлено: Tonal от Июль 29, 2008, 10:24 Опция линкера -e.
Хотя с параметрами там может быть не так просто - стартовая функция вызывается без параметров - она их потом добывает. :) Ну а насчёт размера - 6к для приведённого примера. g++ (GCC) 3.4.5 (mingw-vista special r3) >g++ -s -O2 -o "mini" "mini.cpp" Правда для 4.3.0 получается 50к, но на то она и альфа. Зато если компилировать в чистый С то получается 5к на той же 4.3.0. Название: Re: Уменьшение размера программ в Mingw Отправлено: Red Devil от Июль 29, 2008, 10:27 Дык, у тебя точки входа нет. Погугли статье на русском по этому поводу есть.
Название: Re: Уменьшение размера программ в Mingw Отправлено: trupca от Июль 29, 2008, 13:23 Tonal, стрип и оптимизация помогли кубов так 200 срезать, а там, увы, ещё столько же осталось. но вот с "-e" так и не прокатило:
Цитировать warning: cannot find entry symbol -c; defaulting to 00401000 и потом ругань на множественные определния ep. (скороей всего высказался неверно, так что привожу сами ошибки, чтоб потом небыло несостыковок)Цитировать multiple definition of `_mainCRTStartup' значит гуглить на тему ep+mingw?multiple definition of `_WinMainCRTStartup' multiple definition of `__onexit' etc Название: Re: Уменьшение размера программ в Mingw Отправлено: Tonal от Июль 30, 2008, 07:48 2 trupcaТы бы командную строку привёл. А то не понятно как ты это получил...
Ну и исходники рантайма можно свободно скачать и пересобрать под себя отрезав всё "лишнее". :-) Название: Re: Уменьшение размера программ в Mingw Отправлено: trupca от Август 02, 2008, 18:43 Цитировать Ты бы командную строку привёл под виндами командная строка канеш креатив, но в общем такая картина: стандартные опции компиляции плюс -s, -O2 -Os -e.Название: Re: Уменьшение размера программ в Mingw Отправлено: lit-uriy от Август 02, 2008, 21:51 Цитировать -O2 -Os это ересь, взаимоисключающие ключи, работать будет только последний из указаных-O2 - уровень оптимизиции 2 (в Qt/мингве стоит поумолчанию) -Os - оптимизация только по размеру Название: Re: Уменьшение размера программ в Mingw Отправлено: trupca от Август 02, 2008, 22:05 lit-uriy
в таком случае - -s, -Os -e. кстати говоря, а -s и -Os не одно и тоже? или, как я понял, одна отвечает только за стрип, а другая только за оптимизацию? Название: Re: Уменьшение размера программ в Mingw Отправлено: lit-uriy от Август 02, 2008, 22:20 точно не одно и тоже, те что с большой "О" начинаются отвечают за оптимизацию, а про ключ -s непомню.
Название: Re: Уменьшение размера программ в Mingw Отправлено: lit-uriy от Август 02, 2008, 22:38 руководства можно взять тут (http://gcc.gnu.org/onlinedocs), доступны и pdf'ники
Название: Re: Уменьшение размера программ в Mingw Отправлено: trupca от Август 03, 2008, 18:31 lit-uriy
начинали с гугла, закончили rtfm. )) thx! Название: Re: Уменьшение размера программ в Mingw Отправлено: Tonal от Август 04, 2008, 07:17 Про значения ключей, всяко RTFM.
Собственно, скорее всего, ты забыл указать чтобы не линковались стандартные библиотеки. Функция входа в mingw параметров не принимает - см mingw-runtime/crt1.c:__mingw_CRTStartup Если подставляешь свою точку входа, нужно руками проводить инициализацию rtl-я или совсем его не использовать - это работа с файлами, плавающая точка, исключения, malloc/free, new/delete, потоки и ещё по мелочи. :) |