Undefined Reference vs. Doppeldeklarierung

bad_alloc

Member of Honour
Hallo Community,
ich programmiere momentan für einen AVR Microcontroller (atmega32) und für das dazugehörige Funkmodul RFM12 in C. Dazu habe ich mir diese Bibliothek besorgt. Das Programm steht soweit, jedoch kriege ich folgende Fehler beim Linken:
Code:
 Linking console executable: bin/Debug/testprog1.elf
obj/Debug/main.o: In function `main':
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:55: undefined reference to `rfm12_rx_status'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:57: undefined reference to `rfm12_rx_len'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:58: undefined reference to `rfm12_rx_type'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:64: undefined reference to `rfm12_rx_clear'
Die gesuchten Funktionen, nach dem Schema
Code:
static inline uint8_t rfm12_rx_status(void)
    {
        return ctrl.rf_buffer_out->status;
    }
werden in der Bibliothek definiert und auch von mir eingebunden: Ich includiere own_rfm12.h, welche wiederum rfmlib/rfm12.h (also die Bibliothek) einbindet. Die dazugehörige Sourcedatei ist ebenfalls miteingelinkt. (Sie wird wie in der Doku empfohlen in own_rfm12.c eingebunden). Wie gesagt erhalte ich einen "Undefined reference to..." Error. Eine Vorwärtsdeklaration hilft ebenfalls nicht:
Code:
static inline uint8_t rfm12_rx_len(void);
=> warning: ‘rfm12_rx_len’ used but never defined|
Includiere ich die Implementierungsdatei der Funktionen seperat mit "#include "rfmlib/rfm12.c"", so bekomme ich Fehler nach dem Schema
Code:
/home/Name/Desktop/rfm12/test-atmega32/testprog1/./rfmlib/rfm12.c|343|multiple definition of `rfm12_tick'
Wie kann ich die Funktionen nun nutzen? Im Anhang findet ihr den kompletten Code des Prototypen (daher der grottige Code)

mfg
bad_alloc

EDIT: das ganze wird auf Ubuntu 8.10 mit der IDE Code::Blocks definiert, die den Compiler avr-gcc nutzt.
 
Zuletzt bearbeitet:
Oben