Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: время компиляции проекта ~8мин.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
alux
Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?
HARMHARM
Цитата(alux @ Mar 29 2009, 10:48) *
Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?

Если используете make, можно запустить make -j, это параллельная компиляция. Для двухъядерного опитмально -j4.
Опять же, сделайте depends, не будет перекомпиляции исходников, которые не изменялись. Что за файл долго компилируется?
ОЗУ 256 это мало по современным стандартам, неплохо бы минимум 512!
IgorKossak
У меня тоже долго компилирует, но только первый раз. Повторный rebuild all проходит быстро. Причину не понял.
alux
А долго - это сколько? У меня в любом случае (первый и последующие) Rebuild All более 8 минут... sad.gif
Цитата(HARMHARM @ Mar 29 2009, 13:34) *
Что за файл долго компилируется?

Файл tasks.cpp содержит реализации классов и много различных функций.
meister
Цитата(alux @ Mar 29 2009, 12:48) *
90 процентов времени занимает компиляция одного из файлов.


Сделайте вывод результата препроцесора этого файла и посмотрите на его размер. Чем больше этот файл - тем дольше компилятору его разбирать (как бы очевидно). Еще игры в трехэтажные шаблоны тоже неплохо тормозят компиляцию (за счет увеличения таблицы символов - дольше в ней искать и чаще свопиться).
alux
Обнаружил, что если убрать Cross Call в опциях компилятора, то время компиляции нормальное (порядка пары десятков секунд). Но после этого программа перестает нормально работать. Проблема начинается при вызове функции menu_init(). Внешне это проявляется выводом "мусора" на ЖКИ и пересбросу МК. Размеры CSTACK, RSTACK увеличил в 10 раз. Не помогает. Программа работает нормально только при максимальной оптимизации по размеру (с включенной опцией Cross Call). Из описания компилятора (IAR 5.20.3) : "Эта опция уменьшает размер RSTACK путем запуска cross-call optimizer N раз". Странно однако, обычно эту опцию многие отключают, чтобы не было проблем. У меня же наоборот получается...
На что следует обратить внимание при выключении этой опции?
scifi
Цитата(alux @ Apr 22 2009, 18:36) *
Странно однако, обычно эту опцию многие отключают, чтобы не было проблем.

Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок. Если поведение программы зависит от настроек компилятора, значит программа глюкавая. В таком случае отлаживать можно как обычно: ставить точки останова, смотреть содержимое переменных, стека и т.д.
alux
Цитата(scifi @ Apr 23 2009, 09:09) *
Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок.

Я всегда работал с максимальной оптимизацией по размеру. Повторю, что глюк возникает при ОТКЛЮЧЕНИИ оптимизации. В данном случае опции Cross Call, которая влияет только на размер RSTACK.
xelax
У меня начинает долго компилировать, когда при запущенном IAR вытаскиваешь и втыкаешь usb dongle c лицензионным ключом. Когда перезапускаешь IAR начинает нормально собирать.
Zlumd
Цитата(alux @ Mar 29 2009, 15:48) *
Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?
Похоже это глюк IARa 5.20.
Есть у меня один исходник.
На IAR 5.11B время компиляции при полной оптимизации - 29 секунд.
На IAR 5.20 время компиляции при полной оптимизации - полчаса.
При отсутствии оптимизации обе версии за 5 секунд компилируют.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.