Even the GNU compiler GCC suffers from this "fixed installation path" problem. The compiler driver "gcc" must be able to locate the various compiler components, and thus an installation prefix is specified when building the compiler. :-(
One potential solution is to add an option to "gcc.c" that would add absolute paths relative to the location of the "gcc" executable. This would enable the gcc driver to find the assembler, linker/loader and other tools included in the installation. The absolute path might be gleaned from argv if gcc were invoked with an absolute pathname, or from an argument to the new option. The use of an option to enable this feature would prevent this aberant behaviour from accidently being used by possibly incompatable environments.
I checked the GCC-FAQ for changes. No other dynamic solution is currently available, see the solution above.