[kaffe] Cross compilation on MacOS X - need a little help

Dalibor Topic robilad at kaffe.org
Fri May 21 12:43:02 PDT 2004


Hi Nikolaus,

Dr. H. Nikolaus Schaller wrote:

> Here the issues that I could not solve (yet):
> 1. there is a warning about libreplace.a
> 
> /bin/sh ../libtool --mode=link gcc  -g -O2 -Wall -Wstrict-prototypes  
> -fsigned-char   -o libreplace.la   dummyin6.lo getaddrinfo.lo  
> getifaddrs.lo inet_pton.lo inet_ntop.lo memset.lo
> ar cru .libs/libreplace.a .libs/dummyin6.o .libs/getaddrinfo.o  
> .libs/getifaddrs.o .libs/inet_pton.o .libs/inet_ntop.o .libs/memset.o
> ranlib .libs/libreplace.a
> ranlib: warning for library: .libs/libreplace.a the table of contents  
> is empty (no object file members in the library define global symbols)
> creating libreplace.la
> (cd .libs && rm -f libreplace.la && ln -s ../libreplace.la  libreplace.la)

It's a harmless thing, as far as I know. I've asked on the automake 
mailing list for tips how to build the replacement function library 
conditionally only when it's actually needed. If the automake experts 
know an easy way, then I'll update the build system to do it.

> 2. while creating kaffe-native, I get the following error sequence:
> 
> *** snip ***
> Making all in man
> Making all in libraries/javalib
> cp  /Volumes/Data/hns/Documents/JAVA/kaffe-1.1.4/libraries/javalib/rt- 
> precompiled.jar rt.jar
> Making all in test
> Making all in regression
> Making all in compile_time
> java.lang.ClassFormatError: truncated class
>    at java.lang.ClassLoader.defineClass0 (ClassLoader.java)
>    at java.lang.ClassLoader.defineClass (ClassLoader.java:179)
>    at java.security.SecureClassLoader.defineClass  
> (SecureClassLoader.java:32)
>    at kaffe.lang.AppClassLoader$JarSource.findClass  
> (AppClassLoader.java:143)
>    at kaffe.lang.AppClassLoader.findClass (AppClassLoader.java:291)
>    at java.lang.ClassLoader.loadClass (ClassLoader.java:142)
> java.lang.ClassFormatError: truncated class
>    at java.lang.ClassLoader.defineClass0 (ClassLoader.java)
>    at java.lang.ClassLoader.defineClass (ClassLoader.java:179)
>    at java.security.SecureClassLoader.defineClass  
> (SecureClassLoader.java:32)
>    at kaffe.lang.AppClassLoader$JarSource.findClass  
> (AppClassLoader.java:143)
>    at kaffe.lang.AppClassLoader.findClass (AppClassLoader.java:291)
>    at java.lang.ClassLoader.loadClass (ClassLoader.java:142)
> *** snip ***
> 
> This continues several times for other make directories.
> 
> Otherwise, the native and the cross-compilation runs without further  
> errors.
> 
> When I try to execute any .jar file, I get the same error messages.

Hm. I think that's a problem with the current compile_time tests. Tim, 
would it be possible to change the all: target in 
compile_time/Makefile.am to depend on nothing, and make the check-am: 
target depend on  CompileScript $(CLASS_FILES) ? That would solve this 
cross-compilation problem, I believe, but I'm not sure whether it would 
break the tests.

> 3. I was not able to properly configure the make install of the  
> cross-compiled kaffe so that it does not get installed on the host's  
> /usr/local
> 
> Using --prefix=.... makes it being installed in the working directory  
> but also the scripts java, kaffe, etc. have hard-coded the host path -  
> which is intended to be different on the target machine.
> 
> I.e. I want to create the cross compiled kaffe at  
> $HOME/JAVA/kaffe-arm-linux/usr/local/bin/kaffe on the host but in a way  
> that it can be copied to /usr/local/bin/kaffe on the target machine.

You could try to apply the ideas from 
http://www.kaffe.org/pipermail/kaffe/2003-September/043913.html. I 
haven't looked at it yet :(

cheers,
dalibor topic





More information about the kaffe mailing list