U.a. solltest du auch sehen, welche Suchpfade für die Includes verwendet werden, deine gcc-Version, und wie er configured wurde, etc. Derin Problem ist je kein eigentliches C-Problem, sondern mit deiner Umbegung finzt was nicht.

#include <avr/io.h>

void main()
{
PORTB = 0;
}

Wird bei mir problemlos übersetzt (avr-gcc 3.4.1 unter mingw)

>avr-gcc -v -mmcu=atmega8 -Wall -Os -ffreestanding main.c -c -o main.o -save-temps

...#include <io.h>...
Hingegen gibt eine deprecated (veraltet)-Warnung.
Das die bei dir nicht erscheint, gibt zu denken...