According to Ronald Edward Petty:
> Sorry for the questions.. I just thought someone said that there is a
> shared memory problem on solaris with htdig using that, and that u should
> use a certain linker (namely gnu) instead of (solairs).

I think you're confusing two unrelated responses to other problems.

There's a problem with shared library support, not shared memory,
and it affects Solaris systems running the 3.2.0 betas of htdig only.
It is resolved by using the --disable-shared option to ./configure.
This doesn't affect 3.1.5, because it's not a problem with the standard
C++ libraries, but only the libraries built in the htdig package.
3.1.5 doesn't build any shared libraries.

I doubt anyone recommended using a GNU linker. We often recommend
using GNU make if there are problems with some of htdig's Makefiles
on some platforms. If GNU makes a linker for Solaris, it's the first
I hear about it. Usually, the GNU compilers will use the linker that
comes with the target operating system, if I understand things correctly.

> However the make
> file that htdig comes with i cannot really figure out if there is a
> certain linker to use.. this is a htdig thing not gcc. If i do the proper
> compiler and linker etc then its a gnu problem... that is the question,
> and i have not found an answer from the htdig site about what is the
> proper set up of compiler, linker, assembler. I will ask the gnu people
> and see if this makes any since to them.. thanks for the help.

It's very, very rare to call the linker or assembler directly from a
Makefile for standard C or C++ code. The htdig Makefiles certainly
don't attempt to do this! Generally, for linking C programs, it's
the C or C++ front-end (e.g., cc, gcc, c++, g++) that gets called,
and this front-end is preconfigured to call the correct linker and
pass it all the required libraries. Problems such as you reported
are a symptom of a mis-configured front-end to the C or C++ compilers,
or incompatible libraries, or both. So, this is indeed a gcc thing.

The same goes for the assembler: gcc will typically call the first and
second stage back-end compilers for a .c file, to create a temporary .s
file, and then call the assembler to assemble it into a .o file.

If you can compile and link other C++ programs, it may be a problem with
the libraries your htdig Makefiles are telling the compiler to use,
but it could also be that your other programs are simple enough that
they don't run into similar compatibility issues. In any case, the
htdig Makefiles don't call the linker directly. If they call the wrong
front-end compiler, or use the wrong libraries or library directories,
you may need to change that in your Makefile.config, but this would
be a problem specific to your installation. Lots of users have build
htdig successfully on Solaris, with nothing like the sort of errors you
reported occurring.

It might help to compare the options to gcc or g++, or whatever front-end
is used for linking the .o's and .a's in htdig, to the options used
for C++ programs you were able to link successfully. Especially the -l
and -L options. That might point the way to the problem you're having.
E.g., if you have different versions of libstdc++ or libg++ in different
directories, don't point g++ to an incompatible version with one of your
-L options!