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 ofmain'
build/can-utils-master-edit/bcmserver.o:bcmserver.c:(.text.startup+0x1): first defined here

Is placing guards in C file ALSO advised?