If a symlink to a device is passed to input_uvc.so, mjpg_streamer does not handle it correctly and refuses to start. This is not desirable behavior, as udev rules may be in place to give persistent device names (in the form of symlinks) to multiple attached cameras.
To fix this, a call to canonicalize_file_name() is needed to resolve the link. I've attached a very minimal patch to do just that, and I am successfully able to compile and run with no warnings.
Failure cases are handled as well, as init_VideoIn dies gracefully if passed a null from canonicalize_file_name(), which can happen if the user specifies a nonexistent device. Since this would inevitably result in total failure anyway, I don't consider this to be undesirable behavior.
See https://sourceforge.net/p/mjpg-streamer/patches/17/ - that's a real reason behind symlink handling problems. I successfully use device symlinks after extending devicename buffer.