AR was called with "u" which causes objects of same name not to be updated, thus resulting in random files present in it for duplicate names depending on build order. It happens that "addr.o" and "family.o" exist in two directories and would replace each other. However in order to deduplicate the entry, it is necessary to store the full path using "P". An alternative could be to rename conflicting files. --- ./lib/Makefile.orig 2019-12-02 16:26:12.784991745 +0100 +++ ./lib/Makefile 2019-12-02 16:26:24.696983150 +0100 @@ -58,7 +58,7 @@ $(OUT_AR): ../Makefile.opts $(OBJ) @echo " AR $(OUT_AR)"; - $(AR) crus $(OUT_AR) $(OBJ) + $(AR) crP $(OUT_AR) $(OBJ) clean: @echo " CLEAN lib";