gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problem crosscompiling GNUstep


From: Fred Kiefer
Subject: Problem crosscompiling GNUstep
Date: Wed, 28 Apr 2004 00:52:46 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.2) Gecko/20040220

I am trying to cross compile GNUstep on my ix86 Linux machine for a ARM Linux PDA. There were a few obstacles to overcome, but I managed most of them, but now I am stuck and need some help.

I started of by building a gcc 2.95 for cross compilation. This rather old gcc release is the one everybody else on the Zaurus is using, so I did stick with it.

My first problem was that the documentation of GNUstep make deals with cross compilation in a rather light hearted way. Just using --target did not work for me, I had to use --host=arm-linux --build=ix86-linux.

I than needed to work around the problem that GNUstep.sh expects to be able to execute user_home, which of course was build for the wrong architecture.

After that I compiled libffcall, which did require a specific option to get the configure script to detect the existence of long long ( export cl_cv_c_longlong=yes). Next I compiled libobjc, there the definitions for the ARM processor are missing, I used the ones from unknow, which is also what the mframe component of base does.

Than I compiled or downloaded a few more libraries (zlib, libxml) and started with GNUstep base. Again the autoconfig process could not detect all the settings correctly, as it is running on the wrong machine. So all the AC_TRY_RUN scripts will end up using the provided default values and worse AC_FUNC_SETPGRP fails totally. Another setting works around this (export ac_cv_func_setpgrp_void=yes). Now base compiles and I am able to build the libgnustep-base.so, but the Tools wont compile.

My current problem is the usage of which_lib in the build process of base:
~/gnustep/System/Library/Makefiles/arm/linux-gnu/which_lib: cannot execute binary file

Of course this file cannot be executed on my ix86, it has been compiled for the Zaurus ARM processor! This results in the make process not knowing which base library to link with and so it wont use any at all.

My feeling is that somebody doing these make scripts either did never thing of cross compilation or mixed up the definitions of build, host and target. And that somebody may even be me. Even after reading the Canadian Cross chapter of my autoconf book twice I am still unsure, which to use.

Any help from somebody who already did successfully cross compile GNUstep will be apreciated. If you never tried yourself, better stay out of the discussion, my impression is that almost everything is different from what you would expect.

Fred





reply via email to

[Prev in Thread] Current Thread [Next in Thread]