Hello again,

Just thought I'd provide an update to the forum about my travails in trying to build an armhf version of OpenJDK 8...

Gave up trying to cross-compile, and instead built it natively on an Arm device. The Rasberry Pi is woefully underpowered for such and endeavor, but I do have a quad-core Cortex-A9 device which is a lot faster. No way near the speed of even a modest laptop, but nonetheless much better.

After fits and starts, here's the configuration which enabled a partial build:

$ bash configure --with-jvm-variants=zero --disable-headful --with-memory-size=1024 --enable-openjdk-only

Comments:

1. Added "--disable-headful" because there were errors building what looked like part of Java 2d. As no graphics were required, a headless build is just fine.

2. Added "--with-memory-size=1024". This device only has 1GB RAM, and without this option, configure will specify that BOOT_JAVAC be run with the following options: "-Xms256M -Xmx512M". When it comes time to compiling the 9416 files for BUILD_JDK, an OutOfMemoryException will be thrown.

By providing the "--with-memory-size=1024"option, configure will now specify that BOOT_JAVAC will be run with "-Xms400M -Xmx1100M". The astute will notice that -Xmx1100M is actually larger than physical RAM which is indeed correct. Which also means that swap space must be configured, and thrashing will take place during certain parts of the build. But hey, that's what was needed.

Also note that these systems traditionally use SD cards as their sole filesystem. The thought of swapping to an SD card based disk sounds excruciating and it is. To alleviate somewhat, I attached a USB hard drive and located the build and swap space there.

3. Not sure the "--enable-openjdk-only" is needed.

5. Issued the following command to build:

   $ time make LOG=debug JOBS=4 images

   real    42m16.850s
   user   33m42.020s
   sys     4m42.970s


Cheers,
-- Jim C

On 4/29/2014 12:34 PM, Jim Connors wrote:
Hello,

Trying to build OpenJDK 8 for armhf, ultimately to be hosted on a Raspberry Pi. I'm cross compiling from a Ubuntu 12.04 x86 Virtualbox image and am using gcc-4.7-linaro-rpi-gnueabihf for a toolchain.

Configuration invocation looks as follows:

$ bash configure --with-sys-root=/home/jimc/gcc-4.7-linaro-rpi-gnueabihf/ --target=arm-unknown-linux-gnueabihf --with-jvm-variants=zero --with-num-cores=2

The make fails like this:

Compiling /home/jimc/openjdk8/hotspot/src/os/posix/vm/os_posix.cpp
/home/jimc/openjdk8/hotspot/src/os/linux/vm/os_linux.cpp: In static member function 'static jint os::init_2()': /home/jimc/openjdk8/hotspot/src/os/linux/vm/os_linux.cpp:4853:42: error: 'workaround_expand_exec_shield_cs_limit' was not declared in this scope

Might there a set of patches that are required to get this going further? Anything else I'm missing?

Any pointer greatly appreciated,
-- Jim C

--

*Jim Connors,* Principal Sales Consultant
Oracle Alliances & Channels | Java Embedded Global Sales Unit
Office: +1 516.809.5925
Cell: +1 516.782.5501
Email: james.conn...@oracle.com <mailto:james.conn...@oracle.com>

*Learn more about Embeddable Java:*
http://www.oracle.com/goto/javaembedded


Reply via email to