Автор: Litkevich Yuriy 27.2.2008, 22:46
Есть ли бесплатный как GCC, но более эфективный компиллер?
И вообще подобный 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 по платформам ты не найдёшь, насколько я в курсе. :-)