I'm compiling "gcc version 4.4.0 20090114 (experimental) [trunk revision 143401]" on "i386-pc-solaris2.11" (OpenSolaris 2008.11) and ./configured using: --enable-gstreamer-peer
# gcc/xgcc -v Using built-in specs. Target: i386-pc-solaris2.11 Configured with: ../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++ --enable-shared --disable-static --enable-decimal-float --with-long-double-128 --enable-nls --with-included-gettext --enable-gather-detailed-mem-stats --with-stabs --enable-debug --enable-largefile --enable-symvers --without-system-zlib --enable-gtk-cairo --enable-gconf-peer --enable-gstreamer-peer --enable-xmlj --enable-gtk-peer --enable-qt-peer --enable-plugin --enable-tool-wrappers --enable-local-sockets --enable-gjdoc --enable-java-awt=gtk,xlib,qt,x --enable-gc-debug --enable-libgcj-debug --enable-objc-gc --enable-libstdcxx-debug --disable-stage1-checking --enable-checking=release --without-system-libunwind --with-gnu-as --with-as=/usr/local/bin/as --with-gnu-ld --with-ld=/usr/local/bin/ld Thread model: posix gcc version 4.4.0 20090114 (experimental) [trunk revision 143401] (GCC) Most OSes capable of booting 64-bit will also have 32-bit libraries available but many ONLY have the 32-bit library, no 64-bit version compiled, and the program's ./configure script does not use --enable-multilib . When you are booted in 32-bit mode and want to build 64-bit libraries you can _sometimes_ simply type 'export set CC="gcc -m64"', ./configure and then build normally with the correct result. On some occasions there are many structures to be converted (and correctly aligned) as the code was not ever intended to be compiled 64-bit on a 32-bit machine - thus porting is harder and frequently not done. That means the OS will only have 32-bit _binaries_ installed and to compile the 64-bit binaries you need to resolve all the dependencies (including this same issue re-occurring in the dependencies) and build your own. The "Bug" reported here is: When you can only boot into 32-bit mode (either due to your processor or if using VirtualBox it supports 32/32 host/guest on WinXP) and want to compile gcc 'multilib' (either to distribute gcc or your own libs/execs) if you choose the ./configure option --enable-gstreamer-peer it only checks if part of gstreamer is working and then gives an odd message: /bin/sh ../../../libtool --tag=CC --mode=link /usr/share/src/gcc_build/./gcc/xgcc -B/usr/share/src/gcc_build/./gcc/ -B/usr/local/i386-pc-solaris2.11/bin/ -B/usr/local/i386-pc-solaris2.11/lib/ -isystem /usr/local/i386-pc-solaris2.11/include -isystem /usr/local/i386-pc-solaris2.11/sys-include -m64 -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long -Wno-write-strings -Wno-missing-field-initializers -Wno-unused-parameter -D_REENTRANT -D_PTHREADS -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/X11/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/libpng12 -D_REENTRANT -D_PTHREADS -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -D_REENTRANT -D_PTHREADS -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -fexceptions -fasynchronous-unwind-tables -g -O2 -m64 -module -version-info 0:0:0 -no-undefined -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -R/usr/X11/lib -L/usr/X11/lib -lgdk-x11-2.0 -lXi -lXext -lX11 -lgdk_pixbuf-2.0 -lm -lmlib -lpangocairo-1.0 -lgio-2.0 -lfontconfig -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lXfixes -m64 -o libgstreamerpeer.la -rpath /usr/local/lib/amd64/gcj-4.4.0-10 -module -version-info 0:0:0 -no-undefined -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -lgstbase-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lpthread -lthread -lxml2 -lglib-2.0 -R/usr/X11/lib -L/usr/X11/lib -lgdk-x11-2.0 -lXi -lXext -lX11 -lgdk_pixbuf-2.0 -lm -lmlib -lpangocairo-1.0 -lgio-2.0 -lfontconfig -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lXfixes -module -avoid-version -Wno-unused-parameter -no-undefined -avoid-version gst_peer.lo gstreamer_io_peer.lo gst_native_data_line.lo gst_input_stream.lo gst_native_pipeline.lo gst_classpath_src.lo ../../../native/jni/classpath/jcl.lo -lsocket -lnsl libtool: link: /usr/share/src/gcc_build/./gcc/xgcc -B/usr/share/src/gcc_build/./gcc/ -B/usr/local/i386-pc-solaris2.11/bin/ -B/usr/local/i386-pc-solaris2.11/lib/ -isystem /usr/local/i386-pc-solaris2.11/include -isystem /usr/local/i386-pc-solaris2.11/sys-include -m64 -shared .libs/gst_peer.o .libs/gstreamer_io_peer.o .libs/gst_native_data_line.o .libs/gst_input_stream.o .libs/gst_native_pipeline.o .libs/gst_classpath_src.o ../../../native/jni/classpath/.libs/jcl.o -Wl,-rpath -Wl,/usr/X11/lib -L/usr/X11/lib -lgstbase-0.10 -lgstreamer-0.10 -lgthread-2.0 -lpthread -lthread -lxml2 -lgdk-x11-2.0 -lXi -lXext -lX11 -lgdk_pixbuf-2.0 -lm -lmlib -lpangocairo-1.0 -lgio-2.0 -lfontconfig -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lXfixes -lsocket -lnsl -lc -m64 -m64 -m64 -Wl,-soname -Wl,libgstreamerpeer.so -o .libs/libgstreamerpeer.so /usr/local/bin/ld: skipping incompatible /usr/lib/libgstbase-0.10.so when searching for -lgstbase-0.10 /usr/local/bin/ld: cannot find -lgstbase-0.10 collect2: ld returned 1 exit status gmake[8]: *** [libgstreamerpeer.la] Error 1 gmake[8]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libjava/classpath/native/jni/gstreamer-peer' gmake[7]: *** [all-recursive] Error 1 gmake[7]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libjava/classpath/native/jni' gmake[6]: *** [all-recursive] Error 1 gmake[6]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libjava/classpath/native' gmake[5]: *** [all-recursive] Error 1 gmake[5]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libjava/classpath' gmake[4]: *** [all-recursive] Error 1 gmake[4]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/amd64/libjava' gmake[3]: *** [multi-do] Error 1 gmake[3]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava' gmake[2]: *** [all-multi] Error 2 gmake[2]: Leaving directory `/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava' gmake[1]: *** [all-target-libjava] Error 2 gmake[1]: Leaving directory `/usr/share/src/gcc_build' gmake: *** [all] Error 2 Notice that the scripts get confused, look in the wrong place, and harass 'ld': /usr/local/bin/ld: skipping incompatible /usr/lib/libgstbase-0.10.so when searching for -lgstbase-0.10 /usr/local/bin/ld: cannot find -lgstbase-0.10 The ./configure sanity checks should always check if ONLY the 32-bit half of a package is installed (without the 64-bit version) when compiling gcc 'multilib' in 32-bit mode (where 64-bit code can not be executed) and then signal a dependancy error during the configury instead of waiting until 'ld' ponders the misery that the errant scripts send it's way. Rob -- Summary: [Regression] --enable-gstreamer-peer + multilib + 32 bit boot = broken build Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: bootstrap AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38866