Used apt-get to obtain gcc-4.1 but it seems to favour x86-64 architecture
I am using Debian gnu/Linux on an Athlon-mp (dual-core, k7) and used
Aptitude and Apt-get to upgrade my software recently.
This e-mail address is listed on the Aptitude screen as the "Maintainer" for
"gcc-4.1" (when pre-compiled and downloaded with Aptitude).
The "gcc -v" is:
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-mpfr --with-tune=i686 --enable-checking=release i4
86-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
I am one of the people compiling and checking gcc-4_2-branch - I have
compiled it many times but only recently with gcc-4.1 (obtained from you).
When I try to compile gcc-4_2-branch (20070427) I run into trouble that
seems to involve the ABI of the system used to compiled the version of the GCC
toolchain that you released. The above "gcc -v" makes no mention of multilibs or
-m64 but when I compile gcc-4_2-branch using your toolchain I run into
trouble with it thinking that I want 64bit code.
If I _DO_ ./configure gcc-4_2-branch with the parameter --enable-multilib
then ./configure sets this in the makefile: "CFLAGS=-O2 -g -O2 -m64" .
If I do _NOT_ use --enable-multilib then -m64 _still_ appears in some (but
not all) the Makefiles.
After configuring (with no attempt to use a 64 bit ABI) and then typing
"make" the compile gets as far as through all three stages and into the first
library
(zlib) but then fails when it goes on to the next library (libstdc++-v3).
Anyways, here is the make error that turns up, eventually.
make[6]: Entering directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3'
make "AR_FLAGS=rc" "CC_FOR_BUILD=/usr/bin/gcc-4.1"
"CC_FOR_TARGET=/opt/gcc-4_2-build/./gcc/xgcc -B/opt/gcc-4_2-build/./gcc/ -B/usr//bin/ -B/usr//lib/
-isystem /usr//include -isystem /usr//sys-include" "CFLAGS=-O2 -g -O2 -m64"
"CXXFLAGS=-g -O2 -D_GNU_SOURCE -m64" "CFLAGS_FOR_BUILD=-g -O2"
"CFLAGS_FOR_TARGET=-O2 -g -O2 " "INSTALL=/usr/bin/install -c"
"INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c"
"INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS=-m64" "LIBCFLAGS=-O2 -g -O2 -m64"
"LIBCFLAGS_FOR_TARGET=-O2 -g -O2 " "MAKE=make" "MAKEINFO=makeinfo --split-size=5000000
--split-size=5000000 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh"
"RUNTESTFLAGS=" "exec_prefix=/usr" "infodir=/usr/share/info" "libdir=/usr/lib"
"includedir=/usr/include" "prefix=/usr" "tooldir=/usr/"
"gxx_include_dir=/usr/include/c++/4.2" "AR=ar" "AS=/opt/gcc-4_2-build/./gcc/as"
"LD=/opt/gcc-4_2-build/./gcc/collect-ld" "RANLIB=ranlib" "NM=/opt/gcc-4_2-build/./gcc/nm"
"NM_FOR_BUILD=" "NM_FOR_TARGET=nm" "DESTDIR=" "WERROR=" all-recursive
make[7]: Entering directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3'
Making all in include
make[8]: Entering directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include'
make[8]: Nothing to be done for `all'.
make[8]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include'
Making all in libsupc++
make[8]: Entering directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/libsupc++'
/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile
/opt/gcc-4_2-build/./gcc/xgcc -shared-libgcc -B/opt/gcc-4_2-build/./gcc -nostdinc++
-L/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/src
-L/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/src/.libs -B/usr//bin/ -B/usr//lib/
-isystem /usr//include -isystem /usr//sys-include -m64
-I/root/downloads/gcc-4_2-branch/libstdc++-v3/../gcc
-I/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include/ -I/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include
-I/root/downloads/gcc-4_2-branch/libstdc++-v3/libsupc++
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once -g -O2 -D_GNU_SOURCE -m64 -c -o del_op.lo
/root/downloads/gcc-4_2-branch/libstdc++-v3/libsupc++/del_op.cc
/opt/gcc-4_2-build/./gcc/xgcc -shared-libgcc -B/opt/gcc-4_2-build/./gcc
-nostdinc++ -L/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/src
-L/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/src/.libs -B/usr//bin/
-B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include -m64
-I/root/downloads/gcc-4_2-branch/libstdc++-v3/../gcc
-I/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include/
-I/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/include -I/root/downloads/gcc-4_2-branch/libstdc++-v3/libsupc++
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once -g -O2 -D_GNU_SOURCE -m64 -c
/root/downloads/gcc-4_2-branch/libstdc++-v3/libsupc++/del_op.cc -o del_op.o
/root/downloads/gcc-4_2-branch/libstdc++-v3/libsupc++/del_op.cc:1: sorry,
unimplemented: 64-bit mode not compiled in
make[8]: *** [del_op.lo] Error 1
make[8]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3/libsupc++'
make[7]: *** [all-recursive] Error 1
make[7]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3'
make[6]: *** [all] Error 2
make[6]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/64/libstdc++-v3'
make[5]: *** [multi-do] Error 1
make[5]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/libstdc++-v3'
make[4]: *** [all-multi] Error 2
make[4]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/libstdc++-v3'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/opt/gcc-4_2-build/i686-pc-linux-gnu/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/opt/gcc-4_2-build'
make: *** [all] Error 2
The ./configure script (of gcc-4_2-branch) seems to detect the ability to
produce 64 bit code and throws some "-m64" 's into some of the Makefiles and
a few of the created libtools.
Hand editing the Makefiles to remove all "-m64" 's and then recompiling
works for a while and then fails here:
/usr/bin/gcc-4.1 -shared .libs/xmlj_dom.o .libs/xmlj_error.o
.libs/xmlj_io.o .libs/xmlj_node.o .libs/xmlj_sax.o .libs/xmlj_transform.o .libs/xmlj_util.o
.libs/xmlj_xpath.o ../../../native/jni/classpath/.libs/jcl.o
/usr/lib/libxslt.so -L/usr/lib /usr/lib/libxml2.so -Wl,-soname -Wl,libxmlj.so.0 -o
.libs/libxmlj.so.0.0.0
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_dom.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_error.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_io.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_node.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_sax.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_transform.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_util.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`.libs/xmlj_xpath.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`../../../native/jni/classpath/.libs/jcl.o' is incompatible with i386 output
I have had NO trouble compiling gcc-4_2-branch (on Debian Linux) with gcc
versions:
gcc version 3.3.5 (Debian 1:3.3.5-13)
gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13sarge1)
gcc version 3.4.2 (mingw-special) - /usr/bin/i586-mingw32msvc-gcc
gcc version 4.2.0 20070413 (prerelease)
I have had NO trouble compiling gcc-4_2-branch (on WinXP Cygwin) with gcc
versions:
gcc version 4.1.1 (release)
gcc version 4.2.0 20061225 (prerelease)
I can even compile gcc-4_2-branch (newest version) with one of the above
working compilers and install it as the main system compiler; then use
that to compile gcc-4_2-branch without any problems. What I am unable to do
is get the version that you released (4.1.2) to work. I do understand
that it is a pre-release but I believe that an "official" 4.1.2 is avaiable
(don't know if it shares the -m64 bug).
Most people who apt-get from the _http://ftp.us.debian.org/debian/dists/ ?
/main/binary-i386/_ (http://ftp.us.debian.org/debian/dists/ ?
/main/binary-i386/) directory would NOT want -m64 UNLESS they specifically asked for it on
the command line. If the people who created the binaries configured on an
Opteron (K8) then they might have inadvertantly allowed a default setting to be
used by NOT specifically requesting a -m32 ABI.
You might consider an "official" version of 4.1.2 (from gnu.org) for your
archives at _ftp.us.debian.org_ (ftp://ftp.us.debian.org) (and mirrors). If
you _do_ like a pre-release version then your might want to whip up a 4.2.0
from the SVN (it really works quite well).
Please check / fix the version on your archive. I am going to remove it from
my HD and apt-get a new compiled version from elsewhere.
Thanks,
Rob
Reply to: