8.3.2 Compilers

The default compiler for gawk development is GCC, the GNU Compiler Collection. The default version of GCC is whatever is on the maintainer’s personal GNU/Linux system, although he does try to build the latest released version if that is newer than what’s on his system, and then occasionally test gawk with it.

He also attempts to test occasionally with clang. However, he uses whatever is the default for his GNU/Linux system, and does not make an effort to build the current version for testing.

Both GCC and clang are highly optimizing compilers that produce good code, but are very slow. There are two other compilers that are faster, but that may not produce quite as good code. However, they are both reasonable for doing development.

The Tiny C Compiler, tcc

This compiler is very fast, but it produces only mediocre code. It is capable of compiling gawk, and it does so well enough that ‘make check’ runs without errors.

However, in the past the quality has varied, and the maintainer has had problems with it. He recommends using it for regular development, where fast compiles are important, but rebuilding with GCC before doing any commits, in case tcc has missed something.11

See the project’s home page for some information. More information can be found in the project’s Git repository. The maintainer builds from the mob branch for his work, but after updating it you should check that this branch still works to compile gawk before installing it.

The (Revived) Portable C Compiler

This is an updated version of the venerable Unix Portable C Compiler, PCC. It accepts ANSI C syntax and supports both older and modern architectures. It produces better code than tcc but is slower, although still much faster than GCC and clang.

See the project’s home page for more information. See http://pcc.ludd.ltu.se/supported-platforms for instructions about obtaining the code using CVS and building it.

An alternative location for the source is the gawk maintainer’s Git mirror of the code. If you’re using Ubuntu GNU/Linux 18.04 or later, you need to use the ubuntu-18 branch from this Git mirror.


Footnotes

(11)

This bit the maintainer once.