Главная arrow Программирование arrow AVR arrow avr-gcc (WinAVR): поиск и устранение ошибок при компиляции и линковке Friday, August 18 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

avr-gcc (WinAVR): поиск и устранение ошибок при компиляции и линковке Версия для печати
Написал microsin   
05.06.2011

Здесь приведены некоторые методы поиска и устранения ошибок компиляции и линковки в пакете 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

 

Последнее обновление ( 05.06.2011 )
 

Комментарии  

  1. #1 дмитрий
    2013-12-0818:02:06 Не в курсе, как вызвать из командной строки компилятор WinAVR, что бы он автоматически сделал компиляцию проекта? Это для того чтоб не открывать вручную atmelstudio и через него компилировать проект.

    microsin: для этих целей давно придуман специальный велосипед под названием makefile. Если не знаете что это такое, то прогуглите вопрос. Кстати говоря, именно makefile использует Atmel Studio для компиляции своих проектов.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017