-->
Previous Table of Contents Next


Chapter 10
GNU Project Utilities

by Peter MacKinnon

In This Chapter
•   GNU software currently available

The GNU project, administered by the Free Software Foundation (FSF), seeks to provide software (in the form of source code) that is freely available to anyone who wants to use it. The project has a lengthy manifesto that explains the motivation behind this libertarian undertaking (for which we should all be thankful, since GNU has some of the best software around!). One of the key ideas within this manifesto is that high-quality software is an intrinsic human right, just as is the air that we breathe. Although GNU software is freely distributed, it is not public domain and is protected by the GNU General Public License. The main purpose behind the license is to keep GNU software free.

For more information on the FSF, you can write to them at

Free Software Foundation
675 Massachusetts Avenue
Cambridge, MA 02139

You can also request copies of the GNU Bulletin by sending e-mail to gnu@prep.ai.mit.edu.

The distribution of Linux on this book’s CD-ROM comes with virtually all of the GNU programs that are currently available. They are archived using the tar program and compressed using the GNU gzip utility. gzip tends to compress better than the standard UNIX compression utility, compress. Files compressed with gzip end with a .gz suffix, whereas compress files end in .Z. However, gzip can uncompress compress files as well as its own.

Each of these compressed files has a version number included in its filename so that you can determine which version is most current. After you decompress and un-tar the GNU file, the program can be compiled and installed on your system. Most of the files come with their own makefile. Most of the programs are refinements of standard Linux utilities, such as make and bc.

GNU Software Currently Available

So much software is developed by or made available through the Free Software Foundation that each program cannot be described in detail. The following sections have brief descriptions of the GNU utilities and programs that are included with this distribution of Linux. They are summaries based on the descriptions of the programs as supplied by GNU.

acm

acm is a multiplayer aerial combat game designed for the X window system that can be played in a LAN environment. Players engage in simulated air-to-air combat against one another using missiles and cannons.

Autoconf

Autoconf generates shell scripts that can automatically configure source code packages (such as those for GNU). Autoconf creates a script for a software package from a file that lists the operating system features that the package can utilize. Autoconf requires GNU m4 to generate the required macro calls for its operation.

bash

The shell called bash is an enhancement of the Bourne shell (thus the name, which stands for Bourne Again Shell). It offers many of the extensions found in csh and ksh. The bash shell also has job control, csh-style command history, and command-line editing with Emacs and vi modes built in. See Chapter 11, “bash.”

bc

bc is an algebraic language that can be used interactively from a shell command line or with input files. GNU bc has a C-like syntax with several extensions, including multicharacter variable names, an else statement, and full Boolean expressions. Unlike standard bc, GNU bc does not require the separate dc program, which is another GNU calculator utility.

BFD

The Binary File Descriptor (BFD) library allows a program that operates on object files (such as ld or gdb) to support many different formats efficiently. BFD provides a portable interface, so that only BFD needs to know the details of a particular format. One result is that all programs using BFD support formats such as a.out (default C executable) and COFF.

Binutils

Binutils includes a collection of development programs, including ar, c++filt, demangle, gprof, ld, nlmconv, objcopy, objdump, ranlib, size, strings, and strip.

Binutils Version 2 is completely rewritten to use the BFD library. The GNU linker ld emits source-line numbered error messages for multiply defined symbols and undefined references. nlmconv converts object files into Novell NetWare Loadable Modules (NLM). The objdump program can display data such as symbols from any file format understood by BFD.

Bison

Bison is an upwardly compatible replacement for the parser generator yacc. Bison takes a description of tokens in the form of a grammar and generates a parser in the form of a C program.

GNU C Compiler

Version 2 of the GNU C Compiler (gcc) supports three languages: C, C++, and Objective-C. The language selected depends on the source file suffix or a compiler option. The runtime support required by Objective-C programs is now distributed with gcc. The GNU C Compiler is a portable optimizing compiler that supports full ANSI C, traditional C, and GNU C extensions. GNU C has been extended to support features such as nested functions and nonlocal goto statements. Also, gcc can generate object files and debugging information in a variety of formats. See Chapter 27, “Programming in C,” for more detailed information about C language support.

GNU C Library

The GNU C library supports ANSI C and adds some extensions of its own. For example, the GNU stdio library lets you define new kinds of streams and your own printf formats.

GNU C++ Library

The GNU C++ library (libg++) is an extensive collection of C++ classes, a new iostream library for input/output routines, and support tools for use with g++. Among the classes supported are multiple-precision integers and rational numbers, complex numbers, and arbitrary-length strings. Prototype files also exist for generating common container classes.


Previous Table of Contents Next