Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: runtime в Jan 08, 2015, 21:48



Титла: GCC-AVR undefined reference to
Публикувано от: runtime в Jan 08, 2015, 21:48
Здравейте!

Опитвам се да си добавя една библиотека и да програмирам един ATMEGA 128, но получавам:

demo.c:63: undefined reference to `EEOpen'

Библиотеката е запис/четене на eeprom през i2c, но не че има значение де. :)

Та библиотеката има два файла: 24c64.c и 24c64,h  и двата съм ги сложил в папката на проекта, но не че нещо се случва.


В Makefile-а съм добавил и
24c64.o: 24c64.c
   $(CC) $(INCLUDES) $(CFLAGS) -c  $<


но грешката все още си я има.
П.С. в проекта си инклудвам 24c64.h файла. Ако инклудна ,c файла се компилира ама...

#include "24c64.h"

Та някой да има на идея защо се случва това? Че малко съм скаран с C още  [_]3

P.S. За пртолока: http://extremeelectronics.co.in/avr-tutorials/easy-24c-i2c-serial-eeprom-interfacing-with-avr-microcontrollers/


Титла: Re: GCC-AVR undefined reference to
Публикувано от: neter в Jan 09, 2015, 01:21
Някакъв шанс да видим цялото съдържание на demo.c и Makefile?


Титла: Re: GCC-AVR undefined reference to
Публикувано от: gat3way в Jan 09, 2015, 01:28
Означава че никъде в хедърите които си инклуднал няма EEOpen, мисля че е достатъчно говорящо. Аз бих grep-нал в .h файловете които инклудваш въобще има ли декларирана такава функция.

Между другото не прави такива гимнастики с makefile-а, нямаш нито INCLUDES, нито CFLAGS, не слагай -c щото ще ти създаде object файлове и ще трябва да ги линкнеш изрично, опрости си живота :)


Титла: Re: GCC-AVR undefined reference to
Публикувано от: runtime в Jan 09, 2015, 10:15
Цитат
Някакъв шанс да видим цялото съдържание на demo.c и Makefile?
Има  [_]3

Makefile ($2)

demo.c ($2)

Другите два файла може да се видят от първия линк :)


Титла: Re: GCC-AVR undefined reference to
Публикувано от: bvbfan в Jan 09, 2015, 10:58
Код:
#include <avr/eeprom.h>
- някъде при останалите include-та


Титла: Re: GCC-AVR undefined reference to
Публикувано от: runtime в Jan 09, 2015, 11:08
Код:
#include <avr/eeprom.h>
- някъде при останалите include-та

Ъъъъ какво общо има тази библиотека с другата, която ми връща грешката? При все, че тази, която ми пишеш е за работа с вградената памет в чипа, а аз искам да пиша във виншен чип през i2c интерфейса? Инак мерси за предложението де  [_]3


Титла: Re: GCC-AVR undefined reference to
Публикувано от: bvbfan в Jan 09, 2015, 11:52
Има общо липсват ти функциите за Eeprom-a EEXxx (EEOpen etc)
Код:
#include <avr/io.h>
http://extremeelectronics.co.in/avr-tutorials/easy-24c-i2c-serial-eeprom-interfacing-with-avr-microcontrollers/


Титла: Re: GCC-AVR undefined reference to РЕШЕН!
Публикувано от: runtime в Jan 09, 2015, 12:09
Не съм много съгласен с това :)

Ред 36 в demo.c  [_]3

EEOpen(); е декларирана в 24c64.h репективно кода е в 24c64.c. Въпросния също е инклуднат, но ми дава грешка, която според мен е в линкъра.


РЕШЕН!!!


Титла: Re: GCC-AVR undefined reference to
Публикувано от: bvbfan в Jan 09, 2015, 12:38
Да, сега видях, че ги има функциите. Проблемът е в makefile-a, защото
Код:
24c64.o: 24c64.c
$(CC) $(INCLUDES) $(CFLAGS) -c  $<
това правило не се извиква т.е. файлът 24c64.c не се компилира, за да работи трябва да промениш реда
Код:
OBJECTS = demo.o
на
Код:
OBJECTS = 24c64.o demo.o


Титла: Re: GCC-AVR undefined reference to
Публикувано от: runtime в Jan 09, 2015, 12:46
Тъкмо и това и направих малко преди да пишеш  [_]3 Друг е въпроса, че на i2c дебъгера ми идват някакви странни битове ама това ще го мъдря после :)

Мерси!


Титла: Re: GCC-AVR undefined reference to
Публикувано от: bvbfan в Jan 09, 2015, 13:08
Кодът е трудно читаем и подтиква към грешки
Код:
if (xMBUtilGetBits( ucRegCoilsBuf, 0, 1 )==1)
и
Код:
if (bit_is_clear(PIND,0))
направи ги в цикъл, щото така надиплени може да се сбърка много лесено.


Титла: Re: GCC-AVR undefined reference to
Публикувано от: runtime в Jan 09, 2015, 14:47
Да, да знам, но така ги изтеглих от github. Сега да подкарам нещата, а после ще оправям :)