Здесь приведены некоторые методы поиска и устранения ошибок компиляции и линковки в пакете avr-libc/avr-gcc (WinAVR).
1. Подсказка по командной строке компилятора высвечивается командой:
avr-gcc --help
2. Нужно удалить старые пути запуска из переменной окружения Path. Если на компьютере переустанавливался WinAVR (например, раньше был WinAVR-20080610, а теперь стал WinAVR-20100110), то необходимо ОБЯЗАТЕЛЬНО очистить переменную окружения %Path% от старых путей, иначе пути включаемых файлов include будут вычисляться компилятором gcc неправильно. Нельзя допускать, чтобы старые пути WinAVR соседствовали в %Path% с новыми, даже если новые пути идут первыми. Например, из-за этого глюка я долго не мог разобраться, почему компилятор и линковщик никак не могут найти функцию eeprom_update_byte. Для проверки, какие реально включаемые пути использует компилятор (где он ищет h-файлы), используйте опцию -print-search-dirs (см. пункт 4).
3. Операторы условной компиляции. Для разборок с запутанными операторами условной компиляции (#ifdef, #ifndef, #else и проч.) удобно использовать директивы #warning "сообщение" и #error "сообщение". Они позволяют точно определить, какую ветку в исходном тексте компилятор просмотрел, а какую отбросил.
4. Пути поиска заголовков компилятором. Когда непонятно, почему не включается какой-нибудь заголовочный файл, удобно воспользоваться опцией -print-search-dirs, которая показывает пути поиска компилятором файлов. Эту опцию можно добавить в makefile к общим флагам компилятора, например так:
ALL_CFLAGS += -print-search-dirs
|
Комментарии
2013-12-0818:02:06 Не в курсе, как вызвать из командной строки компилятор WinAVR, что бы он автоматически сделал компиляцию проекта? Это для того чтоб не открывать вручную atmelstudio и через него компилировать проект.
microsin: для этих целей давно придуман специальный велосипед под названием makefile. Если не знаете что это такое, то прогуглите вопрос. Кстати говоря, именно makefile использует Atmel Studio для компиляции своих проектов.