I'm not 100% sure how GNUStep frameworks are supposed to be linked but fact is under linux, it looks for shared libraries in all which is referenced in /etc/ld.so.conf (and /etc/ld.so.conf.d/* ). On the mac the path to a shared library is embedded in the library itself so when you link to it, the binary will remember the absolute path (or relative path to the binary). This is not the case under Linux.
I compile my libraries the way that they end up in /usr/local/lib and the headers into /usr/local/include/<frameworkname>/. That way they always work. But its not really the way OS X or GNUStep frameworks are supposed to work as now we dont have bundles anymore but more traditional libraries as in C.
So for the shared libraries to be considered by the linux dynamic library linker at start of a binary, the ldconfig path's have to be set (maybe over an environment variable which is set by the gnustep startup?). And that seems not to happen in your case. So if you pass it at link time, it can link but at runtime it cant find it anymore.