Thanks David,
That helped...but unfortunately not clear clear yet....almost there
- I don't understand your comment stated as
> build "images" target -> images/j2re-image vs. images/j2sd-image
the word build is both a directory and a verb. target is a keyword in the world
of make. arrow is something GUI folks use and also means go to, also implies
"produces". Can you show me either the make command or any configure(1)
option. Currently I say "make all". Should I say "make images". Here are the
lines form Makefile
$(info . make all # Compile everything, all repos and images)
$(info . make images # Create complete j2sdk and j2re images)
Note the comment for "make images" says, you will get this AND that. There is
no OR. aka this VS that. Maybe you mean, run "make images" and then pick
whichever image you want.
- I don't understand your comment stated as
> but note that non-product builds will always generate debug symbols as
Nowhere in the Makefile or configure, the keyword "non-product" is used. I know
what you mean, but I like the see the exact word that is used in the context of
openjdk build process. I see the following configure(1) option
--with-debug-level set the debug level (release, fastdebug, slowdebug)
[release]
By "non-product" you mean "non release" ? correct?
- I don't understand your comment stated as
> don't care about GUI then you can also look at building the compact
> profiles (make target "profiles" -> images/j2re-compact[123]-image)
Yes, I don't care about GUI, this is an embedded device, on a rack in a data
center. What make target or configure option do I use to get compact. I only
see the following two dirs
mmontaseri@griffin:~/work/bug-91383/jdk8/build/linux-x86_64-normal-server-release/images>
du -sh j2*
98M j2re-image
168M j2sdk-image
Thanks for helping out.
Medi
________________________________________
From: David Holmes [[email protected]]
Sent: Wednesday, February 26, 2014 8:45 PM
To: Medi Montaseri; [email protected]
Subject: Re: How to trim some more fat OpenJDK 8
Hi Medi,
First note that a JDK and a JRE are two different things. A JDK contains
a JRE plus it has development tools like javac, javap etc. So the jre
subdirectory contains everything in the JRE; and everything above that
is for the JDK. So to minimize things you might want a JRE not a JDK:
build "images" target -> images/j2re-image vs. images/j2sd-image
You control whether debuginfo files are generated, and whether if
present they become zipped (.diz files) using the configure arguments:
--disable-debug-symbols
--disable-zip-debug-info
but note that non-product builds will always generate debug symbols as
that is their primary purpose.
You can also save space by only building one VM eg:
--with-jvm-variants=client (or server if you prefer)
Note sure what --disable-headful will actually save you, but if you
don't care about GUI then you can also look at building the compact
profiles (make target "profiles" -> images/j2re-compact[123]-image)
which produce even smaller JRE's. Compact profiles are only supported on
Linux.
Note that the build will typically build everything but the resulting
images only have a subset of what is built.
HTH,
David
On 27/02/2014 1:22 PM, Medi Montaseri wrote:
> Hi,
>
> I am building OpenJDK 8 for a tight environment and would like to have a very
> small JDK (or I should say JRE) footprint....sort of like headless but even
> more.
>
> I would like to do this from the configure(1) as much as possible. And then
> resort to rm(1).
>
> Here is build result on amd64 Debian 7.3 without any trimming
>
> mmontaseri@griffin:~/work/bug-91383/openjdk8> du -sh *
> 168K bin # these are all symlinks to jvm/bin
> 269M jvm
>
> too much...I need to get down to under 30 Meg. So I build again with
> configure --disable-headful --disable-debug-symbols --disable-zip-debug-info
> and I get the following result
>
> mmontaseri@griffin:~/work/bug-91383/depot2> du -sh *
> 168K bin
> 168M jvm # went down from 296M to 168M
>
> That is good, but not good enough....I then looked around and found about 66
> Meg of *.diz files. We don't need these.
>
> Q1- is there any configure option to not produce *.diz files (gdb debug info
> for .so files). If not, then I have to rm(1) them.
>
> Q2- I see two lib directories under jvm/openjdk-1.8.0-internal
> mmontaseri@griffin:~/work/bug-91383/depot2/jvm/openjdk-1.8.0-internal> du -sh
> jre/*
> 4.0K jre/ASSEMBLY_EXCEPTION
> 272K jre/bin
> 97M jre/lib
> 20K jre/LICENSE
> 180K jre/THIRD_PARTY_README
> mmontaseri@griffin:~/work/bug-91383/depot2/jvm/openjdk-1.8.0-internal> du -sh
> lib
> 38M lib
> Can you help me understand the difference between lib/* and jre/lib
>
> I see debian has created a set of packages on OpenJDK 7, like so
> ii openjdk-7-jdk:amd64 7u25-2.3.10-1~deb7u1
> amd64 OpenJDK Development Kit (JDK)
> ii openjdk-7-jre:amd64 7u25-2.3.10-1~deb7u1
> amd64 OpenJDK Java runtime, using Hotspot JIT
> ii openjdk-7-jre-headless:amd64 7u25-2.3.10-1~deb7u1
> amd64 OpenJDK Java runtime, using Hotspot JIT (headless)
> ii openjdk-7-jre-lib 7u25-2.3.10-1~deb7u1
> all OpenJDK Java runtime (architecture
> independent libraries)
>
>
>
> thanks
> Medi
>