My final compilation step was not linking to -lpthread, which was why it was failing. Adding $(CXXFLAGS) to the main target resolved the issue.
-lpthread
$(CXXFLAGS)
$(TARGET): $(OBJS) $(CXX) $(CXXFLAGS) $(OBJS) -o $@