Sender: tim AT mxrelay DOT g-net DOT be Message-ID: <3B85FEBA.9E2ECF7B@falconsoft.be> Date: Fri, 24 Aug 2001 09:14:02 +0200 From: Tim Van Holder Organization: Anubex N.V. X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.16-3 i686) X-Accept-Language: en, nl-BE, nl MIME-Version: 1.0 To: Will Robinson CC: djgpp AT delorie DOT com Subject: Re: linux->dos cross-compiler References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com Will Robinson wrote: > > Thanks so much for your detailed reply! I'm still running into some > problems, and I thought if I told them to you you might have seen them > before. Please keep the CC: to djgpp AT delorie DOT com as well, so the rest of the list/NG can benefit from this thread. > BTW, what compiler are you running on your linux box? I'm using > the version of 2.96 that comes with Mandrake 8. Did you use a newer > version? I used egcs-1.12 (as comes with RedHat 6.2) - but that shouldn't matter, as the gcc you're building will be used for everything once the first bootstrap stage is done. > GCC is another story... > > Things seem to go fine up until the point where it tries to use the new > compiler (xgcc) to build some libraries (libiberty, listdc++, etc). Checking just now, it would seem I didn't actually get around to building the libraries; I just built the compilers. I guess I should have checked before saying everything was fine :-) > There are some small things that I'm fudging around (undefined PATH_MAX, > etc), but the current showstopper comes when trying to build libstdc++-v3 The PATH_MAX thing is due to gcc using its own limits.h, shadowing djgpp's one. Adding an '#include_next "limits.h"' to that file helps. > with the cross-compiler (happens while running "make" from the djbuild > dir): > > make[3]: Entering directory > /tmp/ccz2HiVi.s: Assembler messages: > /tmp/ccz2HiVi.s:468: Error: Rest of line ignored. First ignored character > is `<'. > > Looks like the compiler is generating bogus assembler. Yup. Actually, I can't currently get this far, as binutils 2.11 had a serious bug with DJGPP (an assertion failure in the assembler). That's probably why I didn't build any of the libs. > The above was while running "make" in the djbuild directory. > > I also tried following your instructions, and running "make bootstrap". > From what happened there, it looks like the first stage gets built > correctly, but then the xgcc compiler doesn't know where to look for > system includes. I was very careful with the --target and --prefix > switches when I ran configure...is there anything else to do? Here's the Yes, but my penny just dropped: a bootstrap uses the native compiler to build gcc, and then uses that gcc to build gcc again. But since it's a cross-compiler, that second pass would generate a DJGPP compiler instead of a native one. SO a bootstrap isn't called for. However, the compiles _should_ work, I think. Try running echo >foo.c stage1/xgcc -Bstage1/ -B/opt/djgpp/i586-pc-msdosdjgpp/bin/ -v -c foo.c That should tell you the include path used; it'll probably say something like. So it should be able to find djcrx's include files. ignoring nonexistent directory "/opt/gcc3/i586-pc-msdosdjgpp/sys-include" #include "..." search starts here: #include <...> search starts here: /opt/gcc3/lib/gcc-lib/i586-pc-msdosdjgpp/3.0.1/include /opt/gcc3/i586-pc-msdosdjgpp/include I can't help you any more than this at the moment. I'll try to get the latest CVS binutils & gcc next week and try again. If I get this done, I'll post the results.