About static linking with gcj

David Daney ddaney@caviumnetworks.com
Thu Sep 24 15:41:00 GMT 2009

Andrew Haley wrote:
> l.civinini@libero.it wrote:
>> Hi all,
>> I'm trying to make  static linking in order to obtain a java executable 
>> to use on a device with few hardisk space.
>> I created a simple java that made 
>> only a "System.out.println" and after c
>> ompiling I obtained am executable file 
>> of 29 MB. Is it possibile to 
>> shrink the size of executable? Am I doing 
>> something worng?
>> This is the command that I'm using.
>>  gcc -o Foo Foo.o Foomain.
>> i -shared-libgcc -Wl,-non_shared -lgcj -Wl,-call_shared -lsupc++ -Wl,--as-
>> needed -lz -lgcc_s -lpthread -lc -lm -ldl -Wl,--no-as-needed
> It's difficult.  The nature of the Java library is such that a lot of
> stuff is required, and you'll find it gets linked in.  SOme folks on the
> gcc list have done work in this area, but it's tricky.

You can use -static-libgcj since GCC-4.2.

Also you can try the patches I posted to java-patches@ recently to try 
to reduce the size of the statically linked applications.

The best I have been able to achieve on GCC-4.3.4 is about 10MB.

David Daney

More information about the Gcc-help mailing list