下载http://ftp.gnu.org/gnu/gcc/ 4.2.3
安装环境为64bit ubuntu11.04
参照 http://www.trevorpounds.com/blog/?p=111
gcc-multilib-fix-v3.3.x-to-v4.2.3.debian.x86_64.diff的内容如下:
Index: gcc/config/i386/t-linux64
===================================================================
--- gcc/config/i386/t-linux64 (revision 128844)
+++ gcc/config/i386/t-linux64 (revision 128845)
@@ -4,9 +4,16 @@
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/i386/libgcc-x86_64-glibc.ver
+# On Debian, Ubuntu and other derivitive distributions, the 32bit libraries
+# are found in /lib32 and /usr/lib32, /lib64 and /usr/lib64 are symlinks to
+# /lib and /usr/lib, while other distributions install libraries into /lib64
+# and /usr/lib64. The LSB does not enforce the use of /lib64 and /usr/lib64,
+# it doesn't tell anything about the 32bit libraries on those systems. Set
+# MULTILIB_OSDIRNAMES according to what is found on the target.
+
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
-MULTILIB_OSDIRNAMES = ../lib64 ../lib
+MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
tar xvzf gcc-4.2.3.tar.gz cd gcc-4.2.3 patch -p0 < gcc-multilib-fix-v3.3.x-to-v4.2.3.debian.x86_64.diff mkdir ../gcc-4.2.3-objdir cd ../gcc-4.2.3-objdir ../gcc-4.2.3/configure --prefix=/opt/x86_64/gcc/gcc-4.2.3 --enable-languages=c,c++ make make install
cd /usr/bin mv gcc gcc.bak ln -s /opt/x86_64/gcc/gcc-4.2.3/bin/gcc gcc mv g++ g++.bak ln -s /opt/x86_64/gcc/gcc-4.2.3/bin/g++ g++