using -static
David Daney
ddaney@avtrex.com
Tue Oct 17 16:25:00 GMT 2006
Marco Trudel wrote:
> 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.
>
-static-libgcc will change that.
>>> 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?!
I think you are correct. You might also take a look at the wiki article
on static linking of libgcj.
More information about the Java
mailing list