Supongo que el archivo mi.c contiene código compartido entre el cliente y el servidor ¿no?. El código cómo tal se podría hacer copy&paste desde el archivo mi.c a los otros dos archivos.
A lo que quiero llegar es que mi.c contiene el código de mi.h. Ese código también hay que compilarle tanto en el cliente como en el servidor:
Código:
gcc -o cliente cli2mi.c mi.c
gcc -o servidor ser2mi.c mi.c