Ich habe nun wie vorgeschlagen die I2C Buffer Size definiert. Der Fehler ist nun weg, jedoch habe ich nun 5 neue!

c:50: undefined reference to `i2c_init'
c:51: undefined reference to `lcd_init'
c:52: undefined reference to `lcd_setBacklight'
c:131: undefined reference to `lcd_setCursor'
c:136: undefined reference to `lcd_setCursor'

Code:
#define I2C_BUF_SIZE 32

#include <nibobee/iodefs.h>
#include <nibobee/usart.h>
#include <nibobee/motpwm.h>
#include <nibobee/analog.h>
#include <nibobee/odometry.h>
#include <nibobee/led.h>
#include <nibobee/i2cmaster.h>
#include <nibobee/lcdi2c.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>


int8_t decode_l (uint8_t val) {
  if (val==0x01) return -1;
  if (val==0x02) return 1;
  return 0;
}

int8_t decode_r (uint8_t val) {
  if (val==0x01) return -1;
  if (val==0x02) return 1;
  return 0;
}

void print_hex (uint8_t val) {
  char c1=val/16;
  char c2=val%16;
  if (c1<10) c1+='0'; else c1+='a'-10;
  if (c2<10) c2+='0'; else c2+='a'-10;
  usart_putchar(c1);
  usart_putchar(c2);
}


int main() {
  int odoL,odoR;
	
  activate_output_group(IO_LEDS);  // LED bits als Output
  usart_setbaudrate(9600);
  usart_enable();
  motpwm_init();
  odometry_init();
  motpwm_setLeft(0);
  motpwm_setRight(0);
  analog_init();
  i2c_init();
  lcd_init(0x27);
  lcd_setBacklight(0);
  printf("NIBObee LCD V%d.%d",0,2);
  set_output_group(IO_SENS);       // Pull-ups aktivieren
  activate_output_bit(IO_LINE_EN);
  odoL = 0;
  odoR = 0;

  while(1) {
    sei();
    int8_t left = decode_l((PINC & 0x30)>>4);
    int8_t right = decode_r((PINC & 0xc0)>>6);
    int16_t speed_l = 0;
    int16_t speed_r = 0;
    
    switch (left) {
      case -1: speed_l=-500; break;
      case +1: speed_l=+500; break;
      case  0: speed_l=   0; break;
    }
    
    switch (right) {
      case -1: speed_r=-500; break;
      case +1: speed_r=+500; break;
      case  0: speed_r=   0; break;
    }
    
    motpwm_setLeft(speed_l);
    motpwm_setRight(speed_r);

    int16_t lval = analog_getValue(ANALOG_L1)-(int16_t)analog_getValue(ANALOG_L0) - 40;
    int16_t cval = (3*(analog_getValue(ANALOG_C1)-(int16_t)analog_getValue(ANALOG_C0)))/4 - 60;
    int16_t rval = analog_getValue(ANALOG_R1)-(int16_t)analog_getValue(ANALOG_R0) - 40;

    if ((speed_l==0) && (speed_r==0)) {

      if (lval<0) lval=0;
      if (cval<0) cval=0;
      if (rval<0) rval=0;
   
      if (usart_txempty()) {
        print_hex(LOBYTE(lval>>4));
        usart_putchar(':');
        print_hex(LOBYTE(cval>>4));
        usart_putchar(':');
        print_hex(LOBYTE(rval>>4));
        usart_putchar(10);
        usart_putchar(13);
      }


      uint8_t rule_l = 0;
      uint8_t rule_c = 0;
      uint8_t rule_r = 0;

      if (lval+lval > rval+cval) rule_l=1;
      if (cval+cval > lval+rval) rule_c=1;
      if (rval+rval > lval+cval) rule_r=1;

      if (lval > 300) rule_l=1;
      if (cval > 300) rule_c=1;
      if (rval > 300) rule_r=1;

      if (lval < 100) rule_l=0;
      if (cval < 100) rule_c=0;
      if (rval < 100) rule_r=0;

      led_set(LED_L_RD, rule_l);
      led_set(LED_R_RD, rule_r);

      led_set(LED_L_YE, (PIND & 0x04));
      led_set(LED_R_YE, (PIND & 0x08));
    }
    else {
      led_set(LED_L_RD, (speed_l>0));
      led_set(LED_R_RD, (speed_r>0));
      led_set(LED_L_YE, (speed_l<0));
      led_set(LED_R_YE, (speed_r<0));
    }

    lcd_setCursor(0,1);
    printf("L: %3x %3x %3x  ", rval, cval,lval);

    odoL += odometry_getLeft(1);
    odoR += odometry_getRight(1);
    lcd_setCursor(0,2);
    printf("O: %4d %4d", odoR,odoL);

    _delay_ms(100);

      }

 return 0;                             /* Diese Zeile ist eigentlich nicht
Hat jeman ein Idee? Bei einem anderen user läuft dieser Code ohne Probleme