Thanks much this has me a little more on track. I looked over the header files, and almost every one appears to already have guards in place. BTW, this is proving a good lesson in the concept for me For good measure, and after reading the articles, I also put #pragma once at the top of all header files just in case. Unfortunately no luck. Looks like my errors are coming from the C files and not the headers. For example: build/can-utils-master-edit/slcan_attach.o: In function main': slcan_attach.c:(.text.startup+0x1): multiple definition of main' build/can-utils-master-edit/bcmserver.o:bcmserver.c:(.text.startup+0x1): first defined here Is placing guards in C file ALSO advised?