Differences between version 3 and predecessor to the previous major change of HowToGlibc2HOWTO.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Monday, October 25, 2004 5:14:43 am | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:06:38 am | by perry | Revert |
@@ -1,1748 +1 @@
-
-
-
-Glibc 2 HOWTO
-
-
-
-----
-
-!!!Glibc 2 HOWTO
-
-!!Eric Green, ejg3@cornell.eduv1.6, 22 June 1998
-
-
-----
-''
-
-
-The glibc 2 HOWTO covers installing and using the GNU C Library version 2
-(libc 6) on Linux systems.''
-----
-
-
-
-
-!!1. Introduction.
-
-
-*1.1 About glibc 2.
-
-*1.2 About this document.
-
-*1.3 Recent changes in this document.
-
-
-
-
-
-!!2. Choosing your installation method.
-
-
-
-
-!!3. Getting the library.
-
-
-
-
-!!4. Installing as a test library.
-
-
-*4.1 Compiling and installing.
-
-*4.2 Updating the dynamic loader.
-
-*4.3 Configuring for gcc.
-
-*4.4 Updating header file links.
-
-*4.5 Testing your installation.
-
-
-
-
-
-!!5. Installing as the primary C library.
-
-
-*5.1 Building the library from source.
-
-*5.2 Preparing for installation.
-
-*5.3 Installing from the binary package.
-
-*5.4 Installing from the source.
-
-*5.5 Updating the gcc specs.
-
-*5.6 Testing your installation.
-
-
-
-
-
-!!6. Compiling with the non-primary libc.
-
-
-*6.1 A warning when using non-primary libcs.
-
-*6.2 Compiling programs with a test glibc.
-
-*6.3 Compiling programs with libc 5 when glibc is primary library.
-
-
-
-
-
-!!7. Compiling C++ programs.
-
-
-*7.1 Installing libg++ for a test glibc install.
-
-*7.2 Installing libg++ for a primary glibc install.
-
-*7.3 Compiling C++ programs with the non-primary libc.
-
-
-
-
-
-!!8. Problems.
-
-
-*8.1 Host names do not resolve.
-
-
-
-
-
-!!9. Reporting bugs.
-
-
-
-
-!!10. Sample specs file.
-
-
-
-
-!!11. Miscellanea.
-
-
-*11.1 Further information.
-
-*11.2 Credits.
-
-*11.3 Feedback.
-
-*11.4 Copyright.
-
-----
-
-!!1. Introduction.
-
-
-
-
-
-
-
-!!1.1 About glibc 2.
-
-
-
-
-
-
-
-Glibc 2 is the latest version of the GNU C Library. It currently runs
-unmodified on GNU Hurd systems and Linux i386, m68k, and alpha systems.
-Support for Linux PowerPC, MIPS, Sparc, Sparc 64, and Arm will be in version
-2.1. In the future support for other architectures and operating systems
-will be added.
-
-
-On Linux, glibc 2 is used as the libc with major version 6, the successor
-of the Linux libc 5. It is intended by the Linux libc developers to
-eventually replace libc 5. As of 2..6, glibc is considered production
-quality. Version 2.1 (due out in the near future) will be ready for main
-stream use along with adding more ports and features.
-
-
-There are three optional add-ons available for glibc 2:
-
-; __Crypt__:
-
-The UFC-crypt package. It is seperate because of export restrictions.
-; __!LinuxThreads__:
-
-An implementation of the Posix 1003.1c "pthread" interface.
-; __Locale data__:
-
-Contains the data needed to build the locale data files to
-use the internationalization features of the glibc.
-
-
-
-The crypt and !LinuxThreads add-ons are strongly recommended... not using
-them risks to be incompatible with the libraries of other systems.
-(If you do not wish to use them, you must add the option
---disable-sanity-checks when you run configure.)
-
-
-
-
-!!1.2 About this document.
-
-
-
-
-
-
-This HOWTO covers installing the glibc 2 library on an existing Linux
-system. It is tailored for users of Intel based systems currently using
-libc 5, but users of other systems and alternate libraries (such as glibc 1)
-should be able to use this information by substituting the proper filenames
-and architecture names in the appropriate places.
-
-
-The latest copy of this HOWTO can be found as part of the
-Linux Documentation Project
-or from
-http://www.imaxx.net/~thrytis/glibc/Glibc2-HOWTO.html.
-
-
-
-
-!!1.3 Recent changes in this document.
-
-
-
-
-
-
-Differences between version 1.6 and 1.5:
-
-
-*Fixed the install instructions of the binary glibc package.
-*
-
-
-
-Differences between version 1.5 and 1.4:
-
-
-*Indexing added Ed Bailey.
-*
-
-*Changed my email address.
-*
-
-
-
-
-
-
-
-----
-
-!!2. Choosing your installation method.
-
-
-
-
-
-
-There are a few ways to install glibc. You can install the libraries
-as a test, using the existing libraries as the default but letting you try
-the new libraries by using different options when compiling your program.
-Installing in this way also makes it easy to remove glibc in the future
-(though any program linked with glibc will no longer work after the
-libraries are removed). Using glibc as a test library requires you to
-compile the libraries from source. There is no binary distribution for
-installing libraries this way. This installation is described in
-Installing as a test library.
-
-
-The other way described in this document to install is using glibc as
-your primary library. All new programs that you compile on your system
-will use glibc, though you can link programs with your old libraries using
-different options while compiling. You can either install the libraries
-from binaries, or compile the library yourself. If you want to change
-optimization or configuration options, or use an add-on which is not
-distributed as a binary package, you must get the source distribution
-and compile. This installation procedure is described in
-Installing as the primary C library.
-
-
-Frodo Looijaard describes yet another way of installing glibc. His
-method involves installing glibc as a secondary library and setting up a
-cross compiler to compile using glibc. The installation procedure for
-this method is more complicated then the test library install described
-in this document, but allows for easier compiling when linking to glibc.
-This method is described in his
-Installing glibc-2 on Linux document.
-
-
-If you are currently running Debian 1.3 but do not want to upgrade to the
-unstable version of Debian to use glibc, the
-Debian libc5 to libc6 Mini-HOWTO describes how to use Debian
-packages to upgrade your system.
-
-
-If you are installing glibc 2 on an important system, you might want
-to use the test install. Even if there are no bugs, some programs
-will need to be modified before they will compile due to changes in
-function prototypes and types.
-
-
-
-
-
-
-----
-
-!! 3. Getting the library.
-
-
-
-
-
-
-The glibc 2 consists of the glibc package and three optional add-on
-packages, !LinuxThreads, Locale, and Crypt. The source can be found
-at
-
-
-*
-ftp://prep.ai.mit.edu/pub/gnu/glibc-2..6.tar.gz
-*
-
-*
-ftp://prep.ai.mit.edu/pub/gnu/glibc-linuxthreads-2..6.tar.gz
-*
-
-*
-ftp://prep.ai.mit.edu/pub/gnu/glibc-localedata-2..6.tar.gz
-*
-
-*
-ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2..6.tar.gz
-*
-
-
-
-It will take about 150 MB of disk space for the full compile and install.
-The basic binary install of just the core library package is about 50 MB.
-
-
-Binary packages for 2..6 are not available. Version 2..4 binary packages
-are available for i386 and m68k, and version 2..1 for the alpha can be
-found at
-
-
-*Intel x86:
-
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-2..4.bin.i386.tar.gz
-**
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2..4.bin.i386.tar.gz
-**
-
-
-*
-
-*Alpha:
-
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-2..1.bin.alpha-linux.tar.gz
-**
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2..1.bin.alpha-linux.tar.gz
-**
-
-
-*
-
-*m68k:
-
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-2..4-m68k-linux.bin.tar.gz
-**
-
-**
-ftp://prep.ai.mit.edu/pub/gnu/glibc-crypt-2..4-m68k-linux.bin.tar.gz
-**
-
-
-*
-
-There are export restrictions on the crypt add-on. Non-US users should
-get it from
-ftp://ftp.ifi.uio.no/pub/gnu.
-
-
-If you are running a Red Hat distribution, you can get rpms for glibc 2 from
-ftp://ftp.redhat.com/pub/redhat/. Glibc 2 is the primary C
-library for the new Red Hat distribution 5..
-
-
-If you are running a Debian distribution, you can get the packages for glibc 2
-from
-ftp://ftp.debian.org/debian/dists/unstable/main/. The
-files are named libc6. Glibc 2 is now part of the base package of the
-hamm version of Debian, and will be the primary libc when Debian 2.0 is
-released.
-
-
-
-
-
-
-----
-
-!! 4. Installing as a test library.
-
-
-
-
-
-
-This section covers installing glibc 2 as a test library. Anything you
-compile will be linked to your existing libraries unless you give some
-extra parameters to link to the new libraries. It appears that the
-paths are compiled into quite a few files, so you probably have to
-install the library from source.
-
-
-
-
-!!4.1 Compiling and installing.
-
-
-
-
-
-
-
-
-!Prerequisites.
-
-
-
-
-
-
-
-
-
-*About 150 MB free disk space
-*
-
-*GNU make 3.75
-*
-
-*gcc >= 2.7.2 (better 2.7.2.1)
-*
-
-*binutils 2.8.1 (for alpha you need a snapshot)
-*
-
-*bash 2.
-*
-
-*autoconf 2.12 (if you change configure.in)
-*
-
-*texinfo 3.11
-*
-
-
-
-On an i586@133 with 64 MB of RAM, it takes about 3 hours to compile with full
-libraries with add-ons. On a loaded i686@200, it takes about half
-an hour.
-
-
-
-
-!Extracting the source.
-
-
-
-
-
-
-You need to extract the source from the archives so you can compile it.
-The best way to do this is:
-
-
-tar xzf glibc-2..6.tar.gz
-cd glibc-2..6
-tar xzf ../glibc-linuxthreads-2..6.tar.gz
-tar xzf ../glibc-crypt-2..6.tar.gz
-tar xzf ../glibc-localedata-2..6.tar.gz
-
-
-This will put linuxthreads, crypt, and localedata directories in the
-glibc-2..6 directory where configure can find these add-ons.
-
-
-
-
-!Configuring.
-
-
-
-
-
-
-In the glibc-2..6 directory, create a directory named compile, and
-cd into it. All work will be done in this directory, which will simplify
-cleaning up. (The developers have not been very concerned with getting 'make clean' perfect yet.)
-
-
-mkdir compile
-cd compile
-
-
-Run ../configure. To use the add-on packages, you need to specify
-them with --enable-add-ons, such as --enable-add-ons=linuxthreads,crypt,localedata.
-You also need to choose a destination directory to install to.
-/usr/i486-linuxglibc2 is a good choice. The configure line for this would be:
-
-
-../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr/i486-linuxglibc2
-
-
-
-
-
-
-!Compiling and installing.
-
-
-
-
-
-
-
-To compile and verify, run:
-
-
-make
-make check
-
-
-If the 'make check' succeeds, install the library as root (while still in the
-compile/ directory):
-
-
-make install
-
-
-
-
-
-
-!!4.2 Updating the dynamic loader.
-
-
-
-
-
-
-
-
-
-
-
-#Create a link from the new ld.so to /lib/ld-linux.so.2:
-
-
-ln -s /usr/i486-linuxglibc2/lib/ld-linux.so.2 /lib/ld-linux.so.2
-
-
-This is the only library where the location is fixed once a program
-is linked, and using a link in /lib will ease upgrading to glibc as
-your primary C library when the stable version is released.
-#
-
-#Edit /etc/ld.so.conf. You need to add path to the lib
-directory the new libraries reside in at the end of the file, which will
-be <prefix>/lib, such as /usr/i486-linuxglibc2/lib
-for the choice above. After you have modified /etc/ld.so.conf, run
-
-
-ldconfig -v
-
-
-
-#
-
-
-
-
-
-!!4.3 Configuring for gcc.
-
-
-
-
-
-The last step of installation is updating /usr/lib/gcc-lib so gcc
-knows how to use the new libraries. First you need to duplicate the existing
-configuration. To find out which configuration is current, use the -v
-option of gcc:
-
-
-% gcc -v
-Reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
-gcc version 2.7.2.2
-
-
-In this case, i486-unknown-linux is the system, and 2.7.2.2 is the
-version. You need to copy the /usr/lib/gcc-lib/<system> to
-the new test system directory:
-
-
-cd /usr/lib/gcc-lib/
-cp -r i486-unknown-linux i486-linuxglibc2
-
-
-Change into your new test system directory and version directory
-
-
-cd /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2
-
-
-and edit the file specs found in this directory. In this file,
-change /lib/ld-linux.so.1 to /lib/ld-linux.so.2. You also
-need to remove all expressions %{...:-lgmon} in the file, since
-glibc does not use the gmon library for profiling. A sample specs file can
-be found in the
-Sample specs file section.
-
-
-
-
-!!4.4 Updating header file links.
-
-
-
-
-
-
-
-You need create links in your new include directory to other include
-directories:
-
-
-cd /usr/i486-linuxglibc2/include
-ln -s /usr/src/linux/include/linux
-ln -s /usr/src/linux/include/asm
-ln -s /usr/X11R6/include/X11
-
-
-You might also have other libraries such as ncurses which need their
-header files put in this directory. You should copy or link the files
-from /usr/include. (Some libraries may need to be recompiled
-with glibc2 in order to work with it. In these cases, just compile and
-install the package to /usr/i486-linuxglibc2.)
-
-
-
-
-!!4.5 Testing your installation.
-
-
-
-
-
-
-
-To test the installation, create the following program in a file glibc.c:
-
-
-#include <stdio.h>
-main()
-{
-printf("hello world!\n");
-}
-
-
-and compile with the options of "-b <base install directory> -nostdinc -I<install directory>/include -I/usr/lib/gcc-lib/<new system dir>/<gcc version>/include":
-
-
-% gcc -b i486-linuxglibc2 -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include glibc.c -o glibc
-
-
-Use ldd to verify the program was linked with glibc2, and not your old libc:
-
-
-% ldd glibc
-libc.so.6 => /usr/i486-linuxglibc2/lib/libc-2..6.so (0x4000d000)
-/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
-
-
-If it compiles, the links check out, and it generates
-"hello world!" when run, the installation succeeded.
-
-
-
-
-
-
-
-
-
-----
-
-!! 5. Installing as the primary C library.
-
-
-
-
-
-
-This section covers installing glibc 2 as your primary C library. Any
-new programs you compile will be linked with this library, unless you
-use special compile options to link with another version.
-
-
-If you are are using Redhat or Debian and have downloaded the appropriate
-rpm or deb files, see the Redhat or Debian installion instructions. You
-can then skip this section.
-
-
-
-
-
-
-
-!! 5.1 Building the library from source.
-
-
-
-
-
-
-
-This section explains how to compile glibc 2 and add-ons from the sources.
-You must compile the library if you want to change optimization or
-configuration options or use a package you do not have the binaries for.
-
-
-
-
-!Prerequisites.
-
-
-
-
-
-
-
-
-
-*About 150 MB free disk space
-*
-
-*GNU make 3.75
-*
-
-*gcc >= 2.7.2 (better 2.7.2.1)
-*
-
-*binutils 2.8.1 (for alpha you need a snapshot)
-*
-
-*bash 2.
-*
-
-*autoconf 2.12 (if you change configure.in)
-*
-
-*texinfo 3.11
-*
-
-
-
-On an i586@133 with 64 MB of RAM, it takes about 3 hours to compile with full
-libraries with add-ons. On a loaded i686@200, it takes about half
-an hour.
-
-
-
-
-!Extracting the source.
-
-
-
-
-
-
-You need to extract the source from the archives so you can compile it.
-The best way to do this is:
-
-
-tar xzf glibc-2..6.tar.gz
-cd glibc-2..6
-tar xzf ../glibc-linuxthreads-2..6.tar.gz
-tar xzf ../glibc-crypt-2..6.tar.gz
-tar xzf ../glibc-localedata-2..6.tar.gz
-
-
-This will put linuxthreads, crypt, and localedata directories in the
-glibc-2..6 directory where configure can find these add-ons.
-
-
-
-
-!Configuring.
-
-
-
-
-
-
-In the glibc-2..6 directory, create a directory named compile, and
-cd into it. All work will be done in this directory, which will simplify
-cleaning up. (The developers have not been very concerned with getting 'make
-clean' perfect yet.)
-
-
-mkdir compile
-cd compile
-
-
-Run ../configure. To use the add-on packages, you need to specify
-them with --enable-add-ons, such as --enable-add-ons=linuxthreads,crypt,localedata.
-You probably will also want to specify paths where it will be installed.
-To match the standard linux distributions, specify --prefix=/usr. (When
-a prefix of /usr is specified on a linux system, configure knows to
-adjust other paths to place libc.so and other important libraries in
-/lib.) The whole configure line would be:
-
-
-../configure --enable-add-ons=linuxthreads,crypt,localedata --prefix=/usr
-
-
-
-
-
-
-!Compiling.
-
-
-
-
-
-
-To compile and verify, run:
-
-
-make
-make check
-
-
-
-
-
-
-
-
-
-!!5.2 Preparing for installation.
-
-
-
-
-
-
-
-Now you need to move some files around to prepare for the new library,
-whether you are installing from source or binaries. Any new program compiled
-will be linked to glibc, but old programs which are not statically linked
-will still depend on libc 5, so you can not just overwrite the old version.
-
-
-
-
-
-#Create a new directory to hold the old files to:
-
-
-mkdir -p /usr/i486-linuxlibc5/lib
-
-
-
-#
-
-#The old header files must be evacuated from /usr/include:
-
-
-mv /usr/include /usr/i486-linuxlibc5/include
-
-
-
-#
-
-#Create a new include directory and set up the links to other include
-directories:
-
-
-mkdir /usr/include
-ln -s /usr/src/linux/include/linux /usr/include/linux
-ln -s /usr/src/linux/include/asm /usr/include/asm
-ln -s /usr/X11R6/include/X11 /usr/include/X11
-ln -s /usr/lib/g++-include /usr/include/g++
-
-
-The links may need adjusting according to your distribution. At least
-Slackware puts g++ headers in /usr/local/g++-include, while Debian
-puts the headers in /usr/include/g++, and links
-/usr/lib/g++-include to /usr/include/g++. In the later
-case, you probably will want to move the original g++ include directory back
-to /usr/include.
-
-#
-
-#Restore any extra header files and links. Some non-standard libraries
-such as ncurses put files in /usr/include or put a link to their
-include directories in the /usr/include. These files and links need
-to be restored in order to use the extra libraries properly.
-
-#
-
-#Add your new library directory (such as
-/usr/i486-linuxlibc5/lib) ''at the top'' of your
-/etc/ld.so.conf file. You should have ld.so 1.8.8 or
-better installed to avoid getting strange messages once glibc is installed.
-
-#
-
-#Move/copy all the old C libraries into the new directory.
-
-
-mv /usr/lib/libbsd.a /usr/i486-linuxlibc5/lib
-mv /usr/lib/libc.a /usr/i486-linuxlibc5/lib
-mv /usr/lib/libgmon.a /usr/i486-linuxlibc5/lib
-mv /usr/lib/libm.a /usr/i486-linuxlibc5/lib
-mv /usr/lib/libmcheck.a /usr/i486-linuxlibc5/lib
-mv /usr/lib/libc.so /usr/i486-linuxlibc5/lib
-mv /usr/lib/libm.so /usr/i486-linuxlibc5/lib
-cp /lib/libm.so.5.* /usr/i486-linuxlibc5/lib
-cp /lib/libc.so.5.* /usr/i486-linuxlibc5/lib
-
-
-libm.so.5 and libc.so.5 should be copied and not moved if
-/usr is a seperate partition from /, because they are
-required by programs used to start linux and must be located on the root
-drive partition.
-
-#
-
-#Move the /usr/lib/*.o files into the new directory.
-
-
-mv /usr/lib/crt1.o /usr/i486-linuxlibc5/lib
-mv /usr/lib/crti.o /usr/i486-linuxlibc5/lib
-mv /usr/lib/crtn.o /usr/i486-linuxlibc5/lib
-mv /usr/lib/gcrt1.o /usr/i486-linuxlibc5/lib
-
-
-
-#
-
-#Update your library cache after your libraries are moved.
-
-
-ldconfig -v
-
-
-
-#
-
-
-
-
-
-
-
-
-!!5.3 Installing from the binary package.
-
-
-
-
-
-
-
-If you are installing glibc from precompiled binaries, you first want
-to check what is in the package before you install the binaries:
-
-
-tar -tzvvf glibc-2..bin.i386.tar.gz
-tar -tzvvf glibc-crypt-2..bin.i386.tar.gz
-
-
-If you are happy with that, you can install glibc with:
-
-
-cd /
-tar -xzf glibc-2..bin.i386.tar.gz
-tar -xzf glibc-crypt-2..bin.i386.tar.gz
-ldconfig -v
-
-
-If you have a different architecture or version, substitute the proper
-file names.
-
-
-The most recent glibc version is generally not available as a binary
-package, and it is strongly recommended that you run the most recent
-version to avoid bugs. If you can not build the library yourself, grab
-a binary package of glibc from one of the distributions that is based
-on glibc (e.g. !RedHat) and install this.
-
-
-
-
-!!5.4 Installing from the source.
-
-
-
-
-
-
-
-To install the library from source, run as root from the compile/
-directory:
-
-
-make install
-ldconfig -v
-
-
-
-
-
-
-
-
-
-!!5.5 Updating the gcc specs.
-
-
-
-
-
-
-
-The final step of the installation (for both binary and source installs)
-is to update the gcc specs file so you can link your programs
-properly. To determine which specs file is the one used by gcc, use:
-
-
-% gcc -v
-reading specs from /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2/specs
-gcc version 2.7.2.2
-
-
-
-
-In this case, i486-unknown-linux is the system, and 2.7.2.2 is the version.
-You need to copy the /usr/lib/gcc-lib/<system> to the old
-system directory:
-
-
-cd /usr/lib/gcc-lib/
-cp -r i486-unknown-linux i486-linuxlibc5
-
-
-
-
-Change into the original directory and version directory
-
-
-cd /usr/lib/gcc-lib/i486-unknown-linux/2.7.2.2
-
-
-
-
-and edit the file specs found in this directory. In this file,
-change /lib/ld-linux.so.1 to /lib/ld-linux.so.2. You
-also need to remove all expressions %{...:-lgmon} in the file,
-since glibc does not use the gmon library for profiling. A sample specs
-file can be found in the
-Sample specs file section.
-
-
-
-
-
-
-
-!!5.6 Testing your installation.
-
-
-
-
-
-
-
-To test the installation, create the following program in a file glibc.c:
-
-
-#include <stdio.h>
-main()
-{
-printf("hello world!\n");
-}
-
-
-and compile the program.
-
-
-% gcc glibc.c -o glibc
-
-
-Use ldd to verify the program was linked with glibc2, and not your old libc:
-
-
-% ldd glibc
-libc.so.6 => /lib/libc.so.6 (0x4000e000)
-/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
-
-
-If this compiles and generates "hello world!" when run, the
-installation was successful.
-
-
-
-
-
-
-
-
-
-----
-
-!!6. Compiling with the non-primary libc.
-
-
-
-
-
-
-There are times you will want to use an alternate library to compile
-your programs with. This section explains how to accomplish this, using
-the directories and installation names used in the examples in the
-previous two sections. Remember to change the names to fit your setup.
-
-
-
-
-!!6.1 A warning when using non-primary libcs.
-
-
-
-
-
-Before compiling any programs which is used in the system boot process,
-remember that if the program is dynamically linked and is used before the
-non-root partitions are mounted, all linked libraries must be on the root
-partition. Following the installation process in the previous section
-for installing glibc as your primary C library, the old libc is left in
-/lib, which will be on your root partition. This means all of your
-programs will still work during booting. However, if /usr is on a
-different partition and you install glibc as a test library in
-/usr/i486-linuxglibc2, any new programs you compile with glibc
-will not work until your /usr partition is mounted.
-
-
-
-
-!!6.2 Compiling programs with a test glibc.
-
-
-
-
-
-To compile a program with a test-install glibc, you need to reset the
-include paths to point to the glibc includes. Specifying
-"-nostdinc" will negate the normal paths, and
-"-I/usr/i486-linuxglibc2/include" will point
-to the glibc includes. You will also need to specify the gcc includes,
-which are found in /usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include
-(assuming you installed the test lib in i486-linuxglibc2 with gcc version
-2.7.2.2).
-
-
-To link a program with a test-install glibc, you need to specify the
-gcc setup. This is done by using the option "-b i486-linuxglibc2".
-
-
-For most programs, you can specify these new options by adding them to the
-$CFLAGS and $LDFLAGS makefile options:
-
-
-CFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -b i486-linuxglibc2
-LDFLAGS = -b i486-linuxglibc2
-
-
-If you are using a configure script, define the $CFLAGS
-and $LDFLAGS shell variables (by using env/setenv for
-csh/tcsh, or set/export for sh/bash/etc) before running configure. The
-makefiles generated by this should contain the proper $CFLAGS
-and $LDFLAGS. Not all configure scripts
-will pick up the variables, so you should check after running configure
-and edit the makefiles by hand if necessary.
-
-
-If the programs you are compiling only call gcc (and not cpp or binutils
-directly), you can use the following script to save having to specify
-all of the options each time:
-
-
-#!/bin/bash
-/usr/bin/gcc -b i486-linuxglibc2 -nostdinc \
--I/usr/i486-linuxglibc2/include \
--I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include "$@"
-
-
-You can then use this script instead of "gcc" when compiling.
-
-
-
-
-!!6.3 Compiling programs with libc 5 when glibc is primary library.
-
-
-
-
-
-To compile a program with your old libraries when you have installed
-glibc as your main library, you need to reset the include paths to
-the old includes. Specifying "-nostdinc" will negate the
-normal paths, and "-I/usr/i486-linuxlibc5/include" will point
-to the glibc includes. You must also specify
-"-I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include"
-to include the gcc specific includes. Remember to adjust these paths
-based on the what you named the new directories and your gcc version.
-
-
-To link a program with your old libc, you need to specify the gcc
-setup. This is done by using the option
-"-b i486-linuxlibc5".
-
-
-For most programs, you can specify these new options by appending them
-to the $CFLAGS and $LDFLAGS makefile options:
-
-
-CFLAGS = -nostdinc -I/usr/i486-linuxlibc5/include -I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include -b i486-linuxlibc5
-LDFLAGS = -b i486-linuxlibc5
-
-
-If you are using a configure script, define the $CFLAGS
-and $LDFLAGS shell variables (by using env/setenv for
-csh/tcsh, or set/export for sh/bash/etc) before running configure. The
-makefiles generated by this should contain the proper
-$CFLAGS and $LDFLAGS. Not all configure
-scripts will pick up the variables, so you should check after running
-configure and edit the makefiles by hand if necessary.
-
-
-If the programs you are compiling only call gcc (and not cpp or binutils
-directly), you can use the following script to save having to specify
-all of the options each time:
-
-
-#!/bin/bash
-/usr/bin/gcc -b i486-linuxlibc5 -nostdinc \
--I/usr/i486-linuxlibc5/include \
--I/usr/lib/gcc-lib/i486-linuxlibc5/2.7.2.2/include "$@"
-
-
-You can then use this script instead of "gcc" when compiling.
-
-
-
-
-
-
-----
-
-!!7. Compiling C++ programs.
-
-
-
-
-
-
-Libg++ uses parts of the math library, so is link to libm. Since your
-existing libg++ will be compiled with your old library, you will have
-to recompile libg++ with glibc or get a binary copy. The latest source for
-libg++ along with a binary linked with glibc (for x86) can be found at
-ftp://ftp.yggdrasil.com/private/hjl/.
-
-
-
-
-!!7.1 Installing libg++ for a test glibc install.
-
-
-
-
-
-If you have installed glibc as a test library, you need to install
-the files into the directory you installed glibc into (such as
-/usr/i486-linuxglibc2 for the example in the previous sections).
-If you are installing from the binary package (which i would recommend,
-since i never had any luck compiling libg++ this way), you need to
-extract the files into a temporary directory and move all the
-usr/lib/ files into the <install directory>/lib/
-directory, the usr/include/ files into the
-<install directory>/include/ directory (remember to
-delete your include/g++ link first!), and the usr/bin/
-files into the <install directory>/bin/ directory.
-
-
-
-
-!!7.2 Installing libg++ for a primary glibc install.
-
-
-
-
-
-If you have installed glibc as the primary library, you first need to move
-your old libg++ files into your old libc directory if you still want to be able
-to compile g++ programs with your old libc. Probably the easiest way to
-do this is by installing a new copy of the libg++ compiled with libc 5
-as in the previous section, and then installing the glibc version normally.
-
-
-
-
-!!7.3 Compiling C++ programs with the non-primary libc.
-
-
-
-
-
-If you are trying to compile a C++ program with a non-primary libc, you
-will need to include the g++ include dir, which in the examples above would
-be /usr/i486-linuxglibc2/include/g++ for a test glibc install or
-/usr/i486-linuxlibc5/include/g++ for a primary glibc install.
-This can usually be done by appending the $CXXFLAGS variable:
-
-
-CXXFLAGS = -nostdinc -I/usr/i486-linuxglibc2/include -I/usr/lib/gcc-lib/i486-linuxglibc2/2.7.2.2/include -I/usr/i486-linuxlibc5/include/g++ -b i486-linuxglibc2
-
-
-
-
-
-
-
-
-----
-
-!!8. Problems.
-
-
-
-
-
-
-The glibc package contains a FAQ with additional information that you should
-check if you are having problems. An online version is also available
-at
-http://www.imaxx.net/~thrytis/glibc/glibc-FAQ.html. Below
-are some tips for solving problems which are not covered in the FAQ or are
-covered
here in more detail.
-
-
-
-
-!!8.1 Host names do not resolve.
-
-
-
-
-
-
-
-Glibc 2 uses a different method than libc 5 in looking up host names.
-The glibc name server switch (NSS) code looks for a file
-/etc/nsswitch.conf. If host names are not resolving for you
-when using a glibc 2 application and your /etc/resolv.conf is
-configured correctly, check if you have the /etc/nsswitch.conf
-file. If you do not have this file, you can create one containing the
-line:
-
-
-hosts: files dns
-
-
-It will now look for /etc/resolv.conf to find the nameservers.
-
-
-You should look at the section of the libc info pages describing the
-nsswitch.conf file for more details.
-
-
-
-
-
-
-----
-
-!!9. Reporting bugs.
-
-
-
-
-
-
-If you think the lib is buggy, please read first the FAQ. It might be that
-others had the same problem and there's an easy solution. You should also
-check the section "Recommended Tools to Install the GNU C Library" in the
-INSTALL file since some bugs are bugs of the tools and not of glibc.
-
-
-Once you've found a bug, make sure it's really a bug. A good way to do this
-is to see if the GNU C library behaves the same way some other C library
-does. If so, probably you are wrong and the libraries are right (but not
-necessarily). If not, one of the libraries is probably wrong.
-
-
-Next, go to
-http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl,
-and look through the bug database. Check here to verify the problem has not
-already be reported. You should also look at the file BUGS
-(distributed with libc) to check for known bugs.
-
-
-Once you're sure you've found a new bug, try to narrow it down to the smallest
-test case that reproduces the problem. In the case of a C library, you
-really only need to narrow it down to one library function call, if possible.
-This should not be too difficult.
-
-
-The final step when you have a simple test case is to report the bug. When
-reporting a bug, send your test case, the results you got, the results you
-expected, what you think the problem might be (if you've thought of anything),
-your system type, the versions of the GNU C library, the GNU CC compiler, and
-the GNU Binutils which you are using. Also include the files
-config.status and config.make which are created by running
-configure; they will be in whatever directory was current when you
-ran configure.
-
-
-All bug reports for the GNU C library should be sent using the
-glibcbug shell script which comes with the GNU libc to
-bugs@gnu.org (the older address
-bugs@gnu.ai.mit.edu
-is still working), or submitted through the GNATS web interface at
-http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl.
-
-
-Suggestions and questions should be sent to the mailing list at
-bugs-glibc@prep.ai.mit.edu.
-If you don't read the gnewsgroup gnu.bug.glibc, you can subscribe to
-the list by asking
-bug-glibc-request@prep.ai.mit.edu.
-
-
-Please DO NOT send bug report for the GNU C library to
-<bug-gcc@prep.ai.mit.edu>. That list is for bug reports for GNU CC.
-GNU CC and the GNU C library are separate entities maintained by
-separate people.
-
-
-
-
-
-
-----
-
-!! 10. Sample specs file.
-
-
-
-
-
-
-Included here is a sample specs file for glibc 2 which is used by
-gcc for compiling and linking. It should be found in the directory
-/usr/lib/gcc-lib/<new system dir>/<gcc version>. If you
-are running an x86 system, you probably can copy this section to the file
-exactly.
-
-
-*asm:
-%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}
-*asm_final:
-%{pipe:-}
-*cpp:
-%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
-*cc1:
-%{profile:-p}
-*cc1plus:
-*endfile:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
-*link:
--m elf_i386 %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}}
-%{static:-static}}}
-*lib:
-%{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}}
-*libgcc:
--lgcc
-*startfile:
-%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s}
-%{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
-*switches_need_spaces:
-*signed_char:
-%{funsigned-char:-D__CHAR_UNSIGNED__}
-*predefines:
--D__ELF__ -Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386)
-*cross_compile:
-
-*multilib:
-. ;
-
-
-
-
-
-----
-
-!!11. Miscellanea.
-
-
-
-
-
-
-
-
-!!11.1 Further information.
-
-
-
-
-
-
-
-
-!Web pages.
-
-
-
-
-
-
-
-
-
-*
-FSF's GNU C Library Home Page
-*
-
-*
-Using GNU Libc 2 with Linux
-*
-
-*
-Installing glibc-2 on Linux.
-*
-
-*
-Debian libc5 to libc6 Mini-HOWTO.
-*
-
-
-
-
-
-!Newgroups.
-
-
-
-
-
-
-
-
-
-*
-comp.os.linux.development.system
-*
-
-*
-comp.os.linux.development.apps
-*
-
-*
-linux.dev.kernel
-*
-
-*
-gnu.bugs.glibc
-*
-
-
-
-
-
-!Mailing lists.
-
-
-
-
-
-
-
-
-; __Glibc 2 Linux discussion list.__:
-
-This list is intended for discussion among Linux users who
-have installed glibc2, the new GNU C libraries. Topics
-might include compatibility issues and questions about the
-compilation of code in a Linux/glibc setting.
-To subscribe, send mail to
-Majordomo@ricardo.ecn.wfu.edu with a body of "subscribe glibc-linux
-<your email address>.
-
-
-Archives for this mailing list can be found at
-http://www.progressive-comp.com/Lists/?l=linux-glibc&r=1&w=2#linux-glibc
-
-
-
-
-!!11.2 Credits.
-
-
-
-
-
-
-Most of this information was stolen from the
-GNU Libc web page
-and from Ulrich Drepper's <drepper@gnu.ai.mit.edu> glibc 2 announcement
-and his comments. Andreas Jaeger <aj@arthur.rhein-neckar.de>
-provided some of the Reporting bugs section.
-
-
-The following people have provided information and feedback for this document:
-
-
-*Allex <allex@ms2.accmail.com.tw>
-*
-
-*Mark Brown <M.A.Brown-4@sms.ed.ac.uk>
-*
-
-*Ulrich Drepper <drepper@gnu.ai.mit.edu>
-*
-
-*Scott K. Ellis <ellis@valueweb.net>
-*
-
-*Aron Griffis <agriffis@coat.com>
-*
-
-*Andreas Jaeger <aj@arthur.rhein-neckar.de>
-*
-
-*Hank Leininger <hlein@progressive-comp.com>
-*
-
-*Frodo Looijaard <frodol@dds.nl>
-*
-
-*Ryan !McGuire <rmcguire@freenet.columbus.oh.us>
-*
-
-*Shaya Potter <spotter@capaccess.org>
-*
-
-*Les Schaffer <godzilla@futuris.net>
-*
-
-*Andy Sewell <puck@pookhill.demon.co.uk>
-*
-
-*Gary Shea <shea@gtsdesign.com>
-*
-
-*Stephane <sr@adb.fr>
-*
-
-*Jan Vandenbos <jan@imaxx.net>
-*
-
-*Michael Wolf <wolfm@rpi.edu>
-*
-
-
-
-Translations of this document are being done by:
-
-
-*Chinese: Allex <allex@ms2.accmail.com.tw>
-*
-
-*French: Olivier Tharan <tharan@int-evry.fr>
-*
-
-*Japanese: Kazuyuki Okamoto <ikko-@pacific.rim.or.jp>
-*
-
-
-
-
-
-
-
-
-!!11.3 Feedback.
-
-
-
-
-
-
-Besides writing this HOWTO, maintaining the
-glibc 2 for Linux
-page, and using it on my machine, I have nothing to do with the glibc
-project. I am far from knowledgeable on this topic, though I try to help
-with problems mailed to me. I welcome any feedback, corrections, or
-suggestions you have to offer. Please send them to
-ejg3@cornell.edu.
-
-
-
-
-!!11.4 Copyright.
-
-
-
-Copyright (c) 1997 by Eric Green. This document may be distributed under
-the terms set forth in the LDP license
.
-
-
-
-----
+Describe [HowToGlibc2HOWTO]
here.