where to get the iso c90 compiler?

Giorgos Keramidas keramida at ceid.upatras.gr
Fri Dec 29 06:23:16 PST 2006


On 2006-12-28 20:35, deeptech71 at gmail.com wrote:
>Giorgos Keramidas wrote:
>> Does the lang/gcc41 port work for you?
>
> I don't know I don't care.

Ok, then.

> I want to learn more about compilation processes, get to know
> UNIX-like systems more, and whatever.

That's ok too.  You are bound for a very fun ride, even if it takes
years to realize that it never ends, though :)

> So I've downloaded the source for gcc, and the README says that I need
> the ISO C90 compiler.

There is no "ISO C90 compiler".  There is an ANSI/ISO standard for the
"C Programming Language", which is _implemented_ by some compilers.

You already have an installation of the GNU C compiler (GCC), installed
as the system compiler of your FreeBSD system.  This installation of GCC
includes support for some of the standards related to the C Programming
Language.  You can find out more about the standards supported by your
installation of GCC, by running:

    % info gcc

In the "info browser" that pops up, follow the "Standards:" link and you
can read a lot of details about the various language standards supported
by your GCC installation.

> Where do I get that?

You have it already.  See the "info" documentation of GCC.

In short, you can get GCC to run in a special mode, which is almost
conforming to the ISO9899:1990 standard for the C language.  This mode
is enabled by the options:

    % gcc -ansi -pedantic ...

or by the equivalent set of options:

    % gcc -std=c89 -pedantic ...

In this mode, GCC will produce diagnostic messages for all non-ISO
programs, with only one notable exception, documented in its manual
(see the section `Options Controlling C Dialect'):

    The alternate keywords `__asm__', `__extension__',
    `__inline__' and `__typeof__' continue to work despite
    `-ansi'.  You would not want to use them in an ISO C program,
    of course, but it is useful to put them in header files that
    might be included in compilations done with `-ansi'.
    Alternate predefined macros such as `__unix__' and `__vax__'
    are also available, with or without `-ansi'.

This minor exception means that GCC, even with the options mentioned
above is *NOT* 100%-conforming to the C90 standard, but it is so close
to a fully-conforming implementation of a C90 compiler, that you will
hardly ever notice, unless you use one of the extensions listed above.

> OK it looks like I can compile gcc 4.1 with an older gcc, but that's
> not my choice.

I don't know why you feel that this is not a good choice, but if you go
through the info documentation of GCC and *still* feel this way, then
I'd be interested to know why :)

> [ But if that's the case, how was the first gcc compiled? xD ]
> [ How was the first ever compiler compiled? xD ]

This process is called "compiler bootstrapping".  Google for it, and you
will be amazed at how it works :-)

Regards,
Giorgos



More information about the freebsd-questions mailing list