[GNU Autotools]
news   authors   errata   online   download   links   [goat icon]
 Navigation Bar 
[cover] Authors


The first printing (October 2000) and second printing (2001) each contain a number of minor typographical errors, detailed on this page. The html version of the text does not have these errors. If you discover any more errors, either here or in a printed version of the book, then please do mail me so that I can list them here for the benefit of other readers, and perhaps have them fixed in the next printing.

We should have included an easy to find reference to the book's web site, http://www.samspublishing.com/title/1578701902 somewhere in the frontmatter.

page xx:
  • Please replace `momospaced' with `monospaced'.
  • The font used is not Courier, it is some sort of sans-serif.
  • Shell log lines typed by the user are not emboldened.

p 20, para. 2:
There is a sentence missing near the end of this paragraph:

$@ is available in any rule, but for some versions of make $< is only available in suffix rules. Here is a simple Makefile:

p 20, example 1:
This example should not use $<, and should instead read as follows:
  all:    dummy
	@echo "$@ depends on dummy"

	touch $@

p 22, para. 5:
The file `nly.c' should have been listed as one of the C source files.

p. 54, example 2:
The last line should read:
  [$Xsed -e 's/\.[^.]* /.\$U&/g;s/\.[^.]*$/.\$U&/']`

(the /\ are typeset wrong; there is a missing space; the difference between ` and ' is very hard to see in this font)

The additional level of `[..]' quotes is necessary to prevent autoconf from doing m4 quote substitution in the sed expression.

p. 61, para. 1:
The use of bzero needs to be explained:

Notice in the code above, that xcalloc is implemented in terms of xmalloc, since calloc itself is not available in some older C libraries. Also, the bzero function is actually deprecated in favour of memset in modern C libraries -- I'll explain how to take this into account in section 7.2.3, Beginnings of a configure.in.

p. 67, between para. 3 and para. 4:
The forward reference from the previous errata needs to be added:

Recall that the use of bzero in the Memory Management subsection, of section 7.2.1, is not entirely portable. The trick is to provide a bzero work-alike, depending on which functions Autoconf detects. Add the following towards the end of configure.in:

  AC_CHECK_FUNCS(bzero memset, break)

With the addition of this small snippet of code to common.h, I can now make use of bzero even when linking with a C library that has no implementation of its own:

  # define bzero(buf, bytes)      ((void) memset (buf, 0, bytes))

p. 83, terminology sidebar:
This could be clearer. Substitute the following:

The sheer number of uses of the word library' in this book could be easily very confusing. In this chapter and throughout the rest of the book, I will refer to various kinds of libraries as follows:

Low level libraries, that is, libraries provided by the host architecture.
`Libtool library'
The kind of library built by Libtool. This encompasses both the shared and static native components of the implementation of the named library.
The high level `.la' file produced by Libtool. The `pseudo-library' is not a library in its own right, but is treated as if it were from outside the Libtool interface.

Furthermore, in the context of Libtool, there is another subtle (but important) distinction to be drawn:

`static library'
A Libtool library which has no shared archive component.
`static archive'
The static component of a Libtool library.

p. 93, penultimate para.:
Poor punctuation. Better that it read like this:

The link warning tells you that libtool knows that on HP-UX the program will stop working if it is copied directly to the installation directory; to prevent it from breaking, libtool relinks the program when it is installed (see ...

p. 93, last para.:
Poor punctuation again. The last sentence should begin:
Often this is what you want, if the library...
(The comma following ``Often'' should be removed).
p. 112, example 1:
  [$Xsed -e "s,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,"]`

(filling and spacing has broken the typeset version)

The additional level of `[..]' quotes is necessary to prevent autoconf from doing m4 quote substitution in the sed expression.

p. 112, example 2:
And again:
  LTALLOCA=`echo X"$ALLOCA" | [$Xsed -e "s,\.[^.]*$,.lo,"]`
(the | is typeset differently to the other examples)
The additional level of `[..]' quotes is necessary to prevent autoconf from doing m4 quote substitution in the sed expression.

p. 126/127, example at top of p.127:
The example should not be calculating LTALLOCA, but rather LTLIBOBJS as mentioned in the following paragraph. The penultimate paragraph of code should be as follows:
  Xsed="sed -e s/^X//"
  [$Xsed -e "s,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,"]`

p. 134, example 2:
And again:
  Xsed="sed -e s/^X//"
  [$Xsed -e "s,\.[^.]* ,.lo ,g;s,\.[^.]*$,.lo,"]`

(we should have used Xsed for consistency, and both ` were missing)

The additional level of `[..]' quotes is necessary to prevent autoconf from doing m4 quote substitution in the sed expression.

p. 137, para. 3:
Poor grammar. The next to last sentence of this paragraph should have said:
The purpose of this file is to be #included from all the project source files.

p. 138, para. 2:
Excessive commas. The para. should start with:
The Autoconf macro AC_OUTPUT_COMMANDS provides a way to solve this problem.

p. 143, example 1:
The full example should read as follows:
  docdir	= $(top_builddir)/doc

	echo Making $@ in $(docdir)
	cd $(docdir) && make $@
(`@' missing from both `$@')

p. 205, last para.:
Should have been typeset like the others on the following page (full width, with ``Function'' right justified on the header line.

p. 200, main declaration.:
The argv parameter is missing its [].

p. 202, example. 3:
The full example should read as follows:
  $ gcc -fPIC -c simple-module.c
  $ gcc -shared -o simple-module.so simple-module.o
(missing object file on second line)

p. 226, para. 3:
sym_prefix should be emboldened, and is a ``Variable'', not a ``Function''.

p. 227, para. 1:
A ``Variable'', not a ``Function''.

p. 268, example 1:
This should more properly say:
  $ ls -d /usr/bin/* | wc -l
  sh: error: line too long
It is the use of * that causes the problem, not the lack of a directory change.

p. 271, example. 1:
The `do' is missing from the innermost for loop:
  for dir

p. 276, para. 5:
This should be a reference to section 21.2.4, as it refers to the self executing script in that section.

p. 290, para. 1:
Please add the following sentence to the end of the paragraph:
Note that the name of the cache variable must contain `_cv_' in order to be saved correctly.

p. 290, para. 4:
The link to the autoconf macro archive doesn't work anymore. Instead, you should use http://www.gnu.org/software/ac-archive

p. 303, para. 3:
More specifically:
as far back as version 2.0 as best as I can tell.

p. 316, para. 1:
AC_EXEEXT is not a Libtool macro, it is an Autoconf macro.

Also the first printing (October 2000) contains an additional error:

p. 227, para. 4:
Missing underscore in lt_dlseterror.

Home ]

Comments on these pages to the webmaster.

Copyright (C) 2000, 2006 Gary V. Vaughan.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Last modified: Tue Feb 7 11:21:00 GMT 2006