Static executables

Andrzej Bialecki ab@getopt.org
Mon Jan 30 21:14:00 GMT 2006


Tom Tromey wrote:
>>>>>> "Andrzej" == Andrzej Bialecki <ab@getopt.org> writes:
>>>>>>             
>
> Andrzej> The question is: is it possible to build static binaries on Linux/BSD,
> Andrzej> and if yes, what is the right incantation to do this, for input files
> Andrzej> consisting of a mix of *.java, *.jar, and JNI *.o objects? Eg. if I'm
> Andrzej> using Fedora Core 4, which sports gcc 4.0.2, whenever I try to pass
> Andrzej> the -static flag, the compiler complains that static compilation is
> Andrzej> not supported.
>
> Funny, I didn't realize that this error was in there.
> I don't remember this decision.
>
> Andrzej> * it's not supported, because it's broken in some well-defined cases
>
> Any code that uses reflection will not work properly.  This is a
> problem because parts of the core class library depend on reflection.
> For instance, character set translators and locales are loaded this
> way.
>   

Ugh, that's pretty serious ... Ok, then this means that it's not 
possible to redistribute binaries to machines where there is no runtime 
installation. :-( Or at least not as a single file. For me it was one of 
the expected major advantages of gcj over the standard JVM, but 
unfortunately that's not the case...

> You can work around this by explicitly linking in the ones you need,
> but you need to know some internal details of libgcj to make this
> work.  We've talked occasionally of adding compiler options to make
> this simpler, but nobody has done that yet.
>   

If I were to have the libgcj.a (I don't think it's installed by 
default), could I pick by hand some of the .o files from it and 
explictly tell the linker to keep all symbols from those files? Would it 
work then? Or keep all symbols from the whole libgcj (and tell linker to 
ignore duplicates), would this work?

> It would be helpful if someone wrote a page for the gcc wiki about
> static linking.
>   

Yes, please ...

-- 
Best regards,
Andrzej Bialecki     <><
 ___. ___ ___ ___ _ _   __________________________________
[__ || __|__/|__||\/|  Information Retrieval, Semantic Web
___|||__||  \|  ||  |  Embedded Unix, System Integration
http://www.sigram.com  Contact: info at sigram dot com




More information about the Java mailing list