Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Инструменты разработчика _ Оптимизирующий компилятор

Автор: Litkevich Yuriy 27.2.2008, 22:46

Есть ли бесплатный как GCC, но более эфективный компиллер?
И вообще подобный GCC проект, т.е. бесплатный и поддерживающий множество платформ.

Под эффективностью подразумевается следующее:


По поводу последнего пункта читал, приемущественно для линуксовых платформ, что даже в релиз режиме компиляции, чего-то в код засовывается, может и в виндовозе так.
Например, проект Slax какой-то утилой облегчают бинари, при этом ран-тайм дебагеры типа GDB не в состоянии работать, как я понял, ну и разный, любящий по ковырятся, народ тоже так делает.

Автор: Andrew Selivanov 28.2.2008, 10:49

Цитата(Litkevich Yuriy @ 27.2.2008, 22:46) *
Есть ли бесплатный как GCC, но более эфективный компиллер?
И вообще подобный GCC проект, т.е. бесплатный и поддерживающий множество платформ.

Под эффективностью подразумевается следующее:
  • Более высокая скорость компиляции;
  • Более высокая компактность исполняемого файла
    • Выкидывание (линкером по сути) неиспользуемых кусков кода;
    • В отличие от GCC не засовывание всяких штучек для отладки в код;

По поводу последнего пункта читал, приемущественно для линуксовых платформ, что даже в релиз режиме компиляции, чего-то в код засовывается, может и в виндовозе так.
Например, проект Slax какой-то утилой облегчают бинари, при этом ран-тайм дебагеры типа GDB не в состоянии работать, как я понял, ну и разный, любящий по ковырятся, народ тоже так делает.

нет
нет
по поводу компактности попробуй strip по поводу оптимизации попробуй свичи -mtune=core2 (pentium3, pentium4) -fprofile-arcs -march -mcpu, -fprofile-generate & -fprofile-use и вообще советую почитать по ключам, особенно в старших версиях GCC (4.x.x) и по ключам PGO (Profile Guided Optimization)

PS: А собственно чем тебя так напрягает вес бинарника? Если ты активно используешь шаблоны, конечно он будет большим... я так мыслю хрен с ним с весом, если бы он весил 100Mb вместо одного и работал хотя бы в 10 раз быстрее я был бы просто очень жутко страшно рад :)

Автор: Litkevich Yuriy 28.2.2008, 11:57

Цитата(Andrew Selivanov @ 28.2.2008, 13:49) *
А собственно чем тебя так напрягает вес бинарника?

Мне хочется пользоватся одним инструментом для разных целей, для x86, для AVR, для ARM.
Последний еще не пробывал, но уже работа на подходе, а GNU'тый компиллер весьма не эфективный код дает для AVR (WinAVR на www.sf.net)
Если сравнить с комерческим IAR'ом то примерно в 2 раза больше, а в таких системах как AVR память от 2к до 128к (если брать популярные)
ключ -mtune для AVR неподдерживается, а компилю всегда с ключем -O2 (и сравнеине привел для этого ключа).
с GCC4x еще не пробвал.
Дело в том, что сформировался опрделенный подход при написании программ на С для микроконтроллеров, не только у меня, создавать наборы файлов, что-то вроде библиотек, например функции для работы с контрольными суммами удобно держать в одном файле, те которые не используешь (не вызываешь), комерческие компиляторыне компилят. А когда перешел на GNU'тый, обнаружил, что он все собирает.


А что такое strip?

Автор: Andrew Selivanov 28.2.2008, 12:25

Цитата(Litkevich Yuriy @ 28.2.2008, 11:57) *
Цитата(Andrew Selivanov @ 28.2.2008, 13:49) *
А собственно чем тебя так напрягает вес бинарника?

Мне хочется пользоватся одним инструментом для разных целей, для x86, для AVR, для ARM.
Последний еще не пробывал, но уже работа на подходе, а GNU'тый компиллер весьма не эфективный код дает для AVR (WinAVR на www.sf.net)
Если сравнить с комерческим IAR'ом то примерно в 2 раза больше, а в таких системах как AVR память от 2к до 128к (если брать популярные)
ключ -mtune для AVR неподдерживается, а компилю всегда с ключем -O2 (и сравнеине привел для этого ключа).
с GCC4x еще не пробвал.
Дело в том, что сформировался опрделенный подход при написании программ на С для микроконтроллеров, не только у меня, создавать наборы файлов, что-то вроде библиотек, например функции для работы с контрольными суммами удобно держать в одном файле, те которые не используешь (не вызываешь), комерческие компиляторыне компилят. А когда перешел на GNU'тый, обнаружил, что он все собирает.


А что такое strip?


%GCC_HOME%/bin/strip - утилита, которая удаляет symbol information из бинарника (или опция -s)

Про AVR не могу ничего сказать, я когда то сразу на ассемблере Microchip делал (PIC16F628, 2k под программу), и вообщем то даже так места не хватало...

По поводу как сделать маленький бинарник почитай этот (весьма интересный) тред: http://en.mikrocontroller.net/topic/74054

Автор: Tonal 29.2.2008, 11:34

Про отладочную информацию: добавь ключик -s и её не будет. :-)
Про выкидывание неиспользуемых функций - этим занимается линкер, можно ему немного помочь ключиками -ffunction-sections -fdata-sections и -Wl,--gc-sections.

Ну и аналога gcc по платформам ты не найдёшь, насколько я в курсе. :-)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)