using -static
Marco Trudel
mtrudel@gmx.ch
Tue Oct 17 15:58:00 GMT 2006
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
More information about the Java
mailing list