Надо понять как GCC подключает заголовочный файл sys/socket.h, т.к. директории /usr/include/sys у меня нет.

Размещение заголовочных файлов

Прототипы функций socket, bind и т.д. находятся здесь:
/usr/include/i386-linux-gnu/sys/socket.h

Константы и типы объявляются здесь:
/usr/include/i386-linux-gnu/bits/socket.h
bits/socket.h подключается в sys/socket.h, поэтому включать его в свой код не надо!