PIC stands for "position independent code", and is used in shared libraries. When you build part of the program, you can instruct gcc to generate PIC code using the -fpic option. I don't claim to fully understand exactly what it's doing, but for what it's worth, here's what the gcc documentation says about it:
Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all constant addresses through a global offset table (GOT). The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific maximum size, you get an error message from the linker indicating that -fpic does not work; in that case, recompile with -fPIC instead. (These maximums are 16k on the m88k, 8k on the Sparc, and 32k on the m68k and RS/6000. The 386 has no such limit.)
From the error message I think it's not possible to link PIC code with non-PIC code, r at least that there are som limitations on how it can work. What are you trying to build?