Gcc static linking problems
Tim Purkerson
timp@apcon.com
Mon Aug 11 21:23:00 GMT 2003
This is multi-part question that I have been struggling with for the
past few days. I know similar issues have been addressed recently, but
they haven't worked for me.
My company had developed an application on a previous version of Solaris
(probably 2.7) and built it statically. Well, a few years have passed
and we are looking to make some changes on it. This time, however, it is
on Solaris 9 and currently using gcc 3.2.1.
If I use the exact source code and makefile everything works great
except it builds the application to use dynamic linking. This becomes a
problem when our customer's systems don't have the libraries this
application needs (libstdc++ specifically).
So, the obvious solution is to build it statically, but I can't get it
to build. There are error messages about unresolved externals that
should be resolved in the libsocket library.
Here are the questions:
1. Is there any reason why we shouldn't be trying to build it
statically? How could we make sure our customers have the necessary
libraries if we do build it dynamically?
2. I have seen a lot of posts about adding -static to the build line and
even alternating static and dynamic to get it to build correctly. I have
tried many combination of this with no success. What am I doing wrong on
this line?
g++ -lnsl -lsocket program.o -o program -static -lstdc++
3. Is this problem caused by gcc or by Solaris or by the user?
Any thoughts would be appreciated.
Thanks,
Tim
More information about the Gcc-help
mailing list