Issues migrating from ATmega88 to ATmega88P, with V-USB/AVR-USB?
The problem is that the AVR-GCC library file "iom88p.h" for the ATmega88P (and similar files for ATmega168P and ATmega328P) is broken.  It doesn't define the SIG_INTERRUPT0 interupt vector handler and only defines the alternate handler name of INT0_vect.  The V-USB assembly code uses SIG_INTERRUPT0 and for some reason avr-as doesn't pick up the null define.  

This library problem is also why you can no longer use defines like "PC3" in Arduino and must instead use "PORTC3".

The solution in the case of V-USB is to go into the "usbconfig.h" for your project and add:
     #define USB_INTR_VECTOR         INT0_vect