Should I use the exactly same Intel MKL link line and compiler options to compile VASP and its 3rd-party interfaced libraries?

Still not so clear. Let me describe it in more detail as follows as an example.

vasp compiles with the following MKL settings:

FCL         += -qmkl=parallel
LLIBS       += -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl
INCS         =-I$(MKLROOT)/include/fftw
[...]

# For the VASP-2-Wannier90 interface (optional)
CPP_OPTIONS    += -DVASP2WANNIER90
WANNIER90_ROOT ?= /path/to/your/wannier90/installation
LLIBS          += -L$(WANNIER90_ROOT)/lib -lwannier

Here, the Wannier90 interface linked above is a static library created with different MKL link line settings:

$ ldd ~/Public/repo/github.com/wannier-developers/wannier90/develop/lib/libwannier.a 
	not a dynamic executable

In this case, can I always obtain an ultimate working interface combined into vasp?

Regards,
HZ