Squid_ The Definitive Guide - Duane Wessels [22]
Compiler installation problems
An improperly installed C compiler probably won't be able to compile Squid or any other moderately sized software package. Usually, compilers come pre-installed with the operating system, so you don't have to worry about that. However, if you attempt to upgrade your compiler after installing the operating system, you might make a mistake. Never copy a compiler installation from one machine to another, unless you are absolutely sure about what you are doing. I feel it is always better to install the compiler on each machine separately.
Always make sure that your compiler's header files are synchronized with the library files. The header files normally reside in /usr/include, while libraries are found in /usr/lib. Linux's popular RPM system makes it possible to upgrade one, but not the other. If the libraries are based on different header files, Squid may not compile.
If you want to upgrade the compiler on one of the open-source BSD variants, be sure to run make world from the /usr/src directory, rather than from the /usr/src/lib or /usr/src/include directories.
Here are some common compilation problems and error messages:
Solaris: make[1]: *** [libmiscutil.a] Error 255
This means that ./configure didn't find the ar program. Make sure /usr/ccs/bin is listed in your PATH environment variable. If you don't have the Sun compiler installed, you'll need the GNU binutils (http://www.gnu.org/directory/binutils.html).
Linux: storage size of 'rl' isn't known
This happens when the header and library files don't match, as described earlier. Be sure to upgrade both packages at the same time.
Digital Unix: Don't know how to make EXTRA_libmiscutil_a_SOURCES. Stop.
Digital Unix's make program isn't tolerant of the Makefile produced by the automake package. For example, lib/Makefile.in contains these lines:
noinst_LIBRARIES = \
@LIBDLMALLOC@ \
libmiscutil.a \
libntlmauth.a \
@LIBREGEX@
After substitution, when lib/Makefile is created, it looks like this:
noinst_LIBRARIES = \
\
libmiscutil.a \
libntlmauth.a \
As shown above, the last line contains an (invisible) TAB character, which confuses make. You can get past this problem by installing and using GNU make, or by manually editing lib/Makefile (and any others exhibiting this problem) to make it look like this: noinst_LIBRARIES = \ \ libmiscutil.a \ libntlmauth.a If you have problems compiling Squid, check the FAQ first. You may also want to search the Squid web site (use the search box on the home page). Finally, if you're still stuck, send email to the squid-users@squid-cache.org list. * * * [2] The make output used to be much prettier, but such is the price we pay for advanced compiling tools such as automake. [3] If make recompiles the source every time you run it, and there are no errors, your system clock may be set wrong. make Install After compiling, you need to install the programs into their permanent directories. This might require superuser privileges, to put files in the installation directories. If so, become root first: % su Password: # make install If you enable Squid's ICMP measurement features with the —enable-icmp option, you must install the pinger program. The pinger program must be installed with superuser privileges because only root is allowed to send and receive ICMP messages. The following command installs pinger with the appropriate permissions: # make install-pinger After installing Squid, you should see the following directories and files listed under the installation prefix directory (/usr/local/squid by default): sbin The sbin directory contains programs normally started by root. sbin/squid This is the main Squid program. bin The bin directory contains programs for all users. bin/RunCache RunCache is a shell script you can use to start Squid. If Squid dies, this script automatically