I think you've got things backwards: the -no-undefined flag doesn't really make sense _unless_
shared library dependencies exist.
With the -no-undefined flag set, your library must directly link to all the libraries whose
symbols you used (leaving no "undefined" symbols).
Even on platforms where -no-undefined is not required, it is usually worth using since the
linker can see which library each referenced symbol comes from, making the job of runtime