This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: using -static
David Daney wrote:
Andrew Haley wrote:
Marco Trudel writes:
/home/Marco/.eclipse_workspace/GCC-source/libjava/gnu/classpath/natSystemProperties.cc:97:
> warning: Using 'getpwuid_r' in statically linked applications
requires > at runtime the shared libraries from the glibc version
used for linking
>
/home/Marco/Desktop/compile-lin-lin/gcc-4.2.0-lin-lin/lib/gcc/i686-pc-linux-gnu/4.2.0/../../../libgcj.a(natInetAddress.o):
> In function `hidden alias for JArray<java::net::InetAddress*>* >
java::net::InetAddress::lookup(java::lang::String*, >
java::net::InetAddress*, bool)':
> java/net/natInetAddress.cc:206: warning: Using 'gethostbyaddr_r' in
> statically linked applications requires at runtime the shared
libraries > from the glibc version used for linking
> java/net/natInetAddress.cc:153: warning: Using 'gethostbyname_r' in
> statically linked applications requires at runtime the shared
libraries > from the glibc version used for linking
> > This warnings occur when compiling a simple
System.out.println("hello") > application with "-static".
That's interesting. It tells you that you really shouldn't link
statically against libc, but I don't think that's news.
Certainly it is not new news. I might suggest the shiny new (4.2 only)
-static-libgcj compile time option as an alternative.
That requires the lib "libgcc_s.so" at runtime, but I think that's fine.
As time passes, libgcj is doing more and more dynamic linking. A static
libc does not work well with dynamic linking. Static linking against
libc really only makes sense in the situation where there is only a
single executable image running in the entire system (ala busybox).
Unless you are working on small embedded systems, it is almost always
the wrong thing to do.
I'm not very familiar with this topic, so I don't understand everything
you and Andrew told me. So I would summarize like this:
I shouldn't use "-static", because it does some nasty dynamic/static
linking stuff. I could use -static-libgcj, that does more or less the
same as using a --disable-shared built gcj?!
thanks
Marco