This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more infromation.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

My stochastic sojourn in cross-compiler land


My stochastic sojourn in cross-compiler land.

I would like to thank all the readers of this list for their kind help and
multiple suggestions to get me out of my trouble here.  For several weeks
now I've been trying to build a cross compiler for an i486 architecture
which would use newlib for its run time library as opposed to the standard
libc.  Alas, nothing has worked.  I have come to the conclusion that,
seemingly for this case alone, the GNU build scripts are seriously broken.

Many readers have responded to me asking why I would even try something on
this order when the gcc which comes with Red Hat Linux 6.1 (my freshly
installed system) will produce executable code for this target without
requiring a cross compiler to be built at all.  As I responded to one
questioner:  Why am I trying to build a cross development environment from
ia32-elf to itself?  I have a purely commercial goal:  We manufacture
humidity test chambers here and I want to run an PC/104 i486DX board with a
FLASH rom image of compiled "C" code as a slave controller for one.  We do
not want to distribute our proprietary source code along with each packaged
environmental chamber we sell, which the GNU general license would seem to
require.  Thus I need to sidestep GNU libc and substitute a library
appropriate for our needs.

So do I misunderstand something here?  If I'm doing something stupid in
either project definition or implementation I would DEFINITELY want to know!
I started out following virtually exactly the four-tree example from the
CrossGCC FAQ.  (All right, so I used "prefix = /cross" instead of "prefix =
/bar".  Maybe that's my problem. :-)  The make for gcc failed on libgcc2.c,
bombing out with file not found errors on "#include <stdlib.h>" and
"#include <unistd.h>".  It seems the source tree didn't include those files
in the directory specified in the -I option.  So I got around this with
specifying "--with-headers=/(path to newlib-1.8.2)/newlib/libc/include",
which subdirectory did include the needed headers.

But this was only the start of my build troubles.  I don't want to go on
with exhaustive details about all I tried.  But everything failed, and
always with some form of file not found error.  Inescapably, the conclusion
dawned that existing build scripts were flawed and didn't provide for the
needed files.  Altogether, I eventually sent in four separate bug reports to
bug-gcc@gnu.org.

Many people offered suggestions, usually of the form "if only you had done
so and so . . ."  But "so and so . . ." never worked.  I've been
systematically trying everything suggested, and my last hope seems to be
RTEMS.  I'm working on that, but I've had problems getting all the source
code.  I think I've found a source for egcs-1.1b on a mirror site, so I may
get to try it after all.

But whether I ever get RTEMS to work or never do, I'm pretty sure that the
build scripts for CrossGCC are badly broken for an i486 target.  Has anyone
here ever built a cross compiler for an i[3456]86?  Or am I the only one
crazy enough to even try this?

Your thoughts, comments, or brickbats would be most welcome.  Thanks again,
everyone.

Richard Bowser
Engineer
Thunder Scientific Corporation

email:    richardb@thunderscientific.com




------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]