<artificial>:...: undefined reference to `...'

Declaring static variables in a header is not good. Every .c/.cpp file that includes this header will have its own variable instantiated like this, and they won’t be the same accross files, since static means “limit scope to this compilation unit”. It should said extern LiquidCrystal lcd; here in the header with LiquidCrystal lcd(rs, en, d4, d5, d6, d7); being placed in a .cpp file.

So if we look at that variable

It’s declared in the header file, but in no .c/.cpp file there is

int processState;

or

int processState = <some initial value>;

So the variable is just declared to exist with an extern declaration, but is not actually defined. Hence “undefined referenced”.

They way you create and share global variables in the code is wrong, as said above. Make sure the headers only have an extern declaration (and not static), and make sure one .cpp file defines that variable (must not have an extern declaration when defining).

See e.g. related topic Tutorial for creating multi cpp file arduino project - #19 by peekpt