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