Столкнулся с аналогичной проблемой в WinAVR200712.. Хочу использовать uartInit из набора библиотек AVRlib в своей программе. Кидаю uart.h и uart.c , а так же все остальные *.h файлы, которые вызывает uart.h и друг друга, ну и *c файлы к ним ( global.h, buffer.h, buffer.c, avrlibdefs.h, avrlibtypes.h) в директорию проекта, где находится main.c.
Вариант первый: подключаю только uart.h Код
#include "uart.h"
В программе есть
Код
uartInit()
результат
main.c:108: undefined reference to `uartInit'В секции "Linking: main.elf" , из чего я делаю вывод, что это косяк линкера.
Попытка два: подключаю все хидеры: Код
#include "uart.h"
#include "global.h"
#include "buffer.h"
#include "avrlibdefs.h"
#include "avrlibtypes.h
Результат тот же.
Вариант 3.
Теперь подключаю еще и *.с файлы.Код
#include "uart.h"
#include "uart.c"
#include "global.h"
#include "buffer.h"
#include "buffer.c"
#include "avrlibdefs.h"
#include "avrlibtypes.h
Теперь компилит. Но засовывает все содержимое *.с файлов в программу, результат 2 килобайта вместо 400 байт, и это если убрать uartInit ( то есть ничего из вложенных функций не вызывается).
Подскажите пожалуйста простым русским языком, что и куда надо дописать. Поискал тут на форуме, почитал документацию по ВинАВР. Что-то линкеру скормить надо (как?), но он (линкер) для меня это даже не темный лес, это соседняя галактика.