Unlike most systems, gcc(1) in the Interix Software Development Kit (SDK) defaults to static libraries on builds. To link against the shared libraries, you must give the compiler option --dynamic. To force the compiler to link against the static libraries, use the compiler option --static.
Shared libraries should be linked with libc.so visible to them. It is usually incorrect to link shared libraries against libc.a.
Shared libraries should be linked against libpsxdll.a. The only exception to this would be for a shared library that makes no direct calls to libpsxdll.a entry points (the system calls). Because these system calls are located in the libpsxdll.a dynamic-link library (DLL), errors regarding missing system calls usually mean that libpsxdll.a was not included in the linking.
Although the gcc command understands these rules of linking, you should use extreme caution if you are invoking ld(1) directly.