This article is from the FAQ, by with numerous contributions by
SG02) Gnu C Compiler gcc not supported
You cannot link applications, that specify external OBJFILEs compiled with
gcc. You must use cc for external object files. If you get an error like:
ld: FATAL 2: Internal: at ../commonlib/ld3264/relocate.c \
merge_ext returns nil during relocation
this may be caused by an attempt to link a gcc-produced file into your
If you use make files invoked via the MAKE property in a BETA fragment, you
should use $(CC) instead of a hardcoded C compiler name. The BETA compiler
sets CC to a proper default value on alle UNIX platforms.
If you do not know which external object file caused the error to happen,
you may find out like this:
1. Compile the program with beta -p. This will preserve the job-file,
containing the link-directive(s) for the program.
2. Open the preserved jobfile in a text-editor. The job-file is located in
the sgi subdirectory, and has the same name as the application, but
with ..job appended.
3. Add -v as argument to the last invocation of /bin/ld in the job file.
4. Save and execute the job-file.
When the job-file starts to link the final application, it will now print
out the name of each file in the last link-directive as they are processed.
This includes all external object files (specified by OBJFILE in the BETA
code), and you should thus be able to see what file causes the linker to
fail: It is likely to be the last one printed out before the linker crashes.