stdio.h: File not found?!?

Kai Ruottu
Thu Apr 6 13:08:00 GMT 2006

Martin Krischik kirjoitti:

 > I did not expect to need a mingw-runtime before the 2nd step (creating a
 > --build=x86_64-suse-linux --host=mingw --target=mingw compiler)

In order to produce MinGW apps on Linux, you need binutils, GCC and
target headers plus libraries...  A GCC which can only produce 'i386-pe'
objects (the Windoze object format) with 'as' from binutils, isn't very 
for anything...

Producing GCC requires a "complete C compiler".  The "ISO99 C compiler"
the "Prerequisites" in the "Installing GCC" talks about is something 
very weird
gibberish for most people.  Because GCC oneself cannot produce GCC, then
GCC isn't a "ISO99 C compiler" or how?
>>> Of corse: since it is a --build=x86_64-suse-linux 
>>> --host=x86_64-suse-linux
>>> compile using  /usr/include/stdio.h should be ok as well. Or did I 
>>> miss read
>>> the cross compile instructions completely?
 Probably... The ones in the gcc-2.95.3 manual are still true!   When 
the cross
compile instructions clearly tell that the target C library MUST be 
present, its
headers required for fixing them for GCC first, then used when producing the
target libraries (libgcc, libiberty, libstdc++,...), and the library 
binaries required
for checking what the target C library has or has not, you should 
believe ! And
when the author of the manual is called Richard M.Stallman, what reasons you
have to not believe?   Although the current version is 4.x, these basic 
haven't changed at all, still there is that 'fixincludes' phase, target 
headers used
when producing 'libgcc.a'  and target libraries used when producing 
(for Unix-like targets) and when doing link tests during the libiberty 
and libstdc++

 > You see me confused. I thought that a "--build=x86_64-suse-linux
 > --host=x86_64-suse-linux" compiler is to run under Linux - what does 
is need
 > a MinGW runtime so soon? - I am only trying to create the 
cross-compiler itself
 > - I am not yet trying to create any MinGW binaries with it.

Even "compiling" that "Hello World" has the "#include <stdio.h>", so 
most newbies
know these (target) headers being obligatory. "Linking" it then requires 
the startups
and those target libraries ('libc' usually but with MinGW that is 
'libmsvcrt').  So what
you think a compiler being differs horribly about what a newbie thinks 
it being and
what one can do with a "compiler"... Usually this requirement is "It can 
compile the
Hello World", and here that "compile" means "producing the executable 
from the source "hello.c" !

 The expectation for "producing a crosscompiler for MinGW" is that the 
wants to be capable to (at least) produce that "Hello World" for MinGW 
after the
compiler is ready.

More information about the Gcc-help mailing list