Диета для mingw
От: el kamikaze Россия  
Дата: 21.07.05 21:17
Оценка:
Как проще всего снизить размер выходных бинарников mingw ну и gcc? А то жирные больно...
Имеется в виду 1) опции компилера и 2) оптимизация на ур-не исходников.
Re: Диета для mingw
От: Cyberax Марс  
Дата: 22.07.05 06:56
Оценка:
el kamikaze wrote:

> Как проще всего снизить размер выходных бинарников mingw ну и gcc? А

> то жирные больно...

strip не пробовал?

> Имеется в виду 1) опции компилера


-Os

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re: Диета для mingw
От: 0rc Украина  
Дата: 22.07.05 07:59
Оценка:
Здравствуйте, el kamikaze, Вы писали:

EK>Как проще всего снизить размер выходных бинарников mingw ну и gcc? А то жирные больно...

EK>Имеется в виду 1) опции компилера и 2) оптимизация на ур-не исходников.

-g (по умолчанию стоит) — убирает всю debug-info
-O0 — убирает оптимизацию

лучше всего снизить размер — это использовать *.so вместо *.a если это возможно конечно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Диета для mingw
От: Lorenzo_LAMAS  
Дата: 22.07.05 08:29
Оценка:
0rc>-g (по умолчанию стоит) — убирает всю debug-info


?????

3.9 Options for Debugging Your Program or GCC

GCC has various special options that are used for debugging either your program or GCC:

-g
Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information.

Of course, the code must be complete enough to compile and link.
Re[3]: Диета для mingw
От: 0rc Украина  
Дата: 22.07.05 09:11
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

0rc>>-g (по умолчанию стоит) — убирает всю debug-info



L_L>?????



-g0 конечно же, спасибо
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Диета для mingw
От: 0rc Украина  
Дата: 22.07.05 09:19
Оценка:
Здравствуйте, 0rc, Вы писали:

0rc>Здравствуйте, Lorenzo_LAMAS, Вы писали:


0rc>>>-g (по умолчанию стоит) — убирает всю debug-info



L_L>>?????


0rc>

0rc>-g0 конечно же, спасибо

упс, давно не смотрел минимальный 1
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Диета для mingw
От: Lorenzo_LAMAS  
Дата: 22.07.05 09:24
Оценка:
ну, благодаря тебе, я узнал про g0
Of course, the code must be complete enough to compile and link.
Re[6]: Диета для mingw
От: 0rc Украина  
Дата: 22.07.05 09:38
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>ну, благодаря тебе, я узнал про g0


угу, я насоветовал сегодня, пора в отпуск мне.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Диета для mingw
От: Lorenzo_LAMAS  
Дата: 22.07.05 10:27
Оценка:
0rc>угу, я насоветовал сегодня, пора в отпуск мне.

какой опцией заставить сгенерить асм и чтоб строки ишодного кода остались ?
Of course, the code must be complete enough to compile and link.
Re[8]: Диета для mingw
От: raskin Россия  
Дата: 22.07.05 13:39
Оценка:
Lorenzo_LAMAS wrote:
> 0rc>угу, я насоветовал сегодня, пора в отпуск мне.
>
> какой опцией заставить сгенерить асм и чтоб строки ишодного кода остались ?

-S ?
Posted via RSDN NNTP Server 2.0 beta
Re[8]: Диета для mingw
От: 0rc Украина  
Дата: 22.07.05 13:45
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

0rc>>угу, я насоветовал сегодня, пора в отпуск мне.


L_L>какой опцией заставить сгенерить асм и чтоб строки ишодного кода остались ?


man gcc


не прикалывайся
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Диета для mingw
От: RomikB  
Дата: 22.07.05 13:57
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

0rc>>угу, я насоветовал сегодня, пора в отпуск мне.


L_L>какой опцией заставить сгенерить асм и чтоб строки ишодного кода остались ?


Это как? Можно просто asm ключиком -S.

А для уменьшения размера юзать добавочно ключики линкера.

gcc -O3 -g0 -Wl,-x,-s

а ещё полезно посмотреть

gcc --help
... << RSDN@Home 1.1.3 stable >>
Re[9]: Диета для mingw
От: el kamikaze Россия  
Дата: 22.07.05 20:23
Оценка:
RB>gcc --help
>> man gcc

Не народ, ну вы приколисты

Я все это знаю конечно. Я имел в виду посерьезней, Прошу прощения если вопрос звучал по-идиотски

Изменю постановку вопроса.

1) имеем проект под MSVC.
2) имеем оптимизацию по СКОРОСТИ + для разных файлов проекта разная + под AMD и Интел заточки. Плюс в коде ассемблерные вставки (немного и на FASM, так что перенос не проблема).
3) настраиваем линкер как надо (стрип там и все такое).
4) получаем бинарник значительно жирнее чем от cl.

Вопрос звучит так: приложив минимум усилий по рефакторингу и ручной оптимизации, заставить бинарник максимально уменьшиться. Или вообще так: что конкретно оптимизировать в коде?

Насколько я понял, gcc/ld
1) создает кучу сегментов в EXE-шнике, может их в меньшее число слить? Кк это проще сделать? Линкер скрипт? Это первое что мне в голову приходит, я просто в особенностях gcc плохо разбираюсь.
2) при компиляции плохо предсказывает использование регистров? и видимо долго переливает из пустого в порожнее, что на быстродействии положительно не сказывается, а большое число команд засирает кэш почем зря.

Просто никогда с gcc дела не имел, а вот вдруг потребовалось перетащить проект на mingw и линух. Думаю кто-то уже побывал в подобной ситуации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.