Subject: Re: libstdc++ problems on Linux
To: Ben Collver <collver1@comcast.net>
From: Louis Guillaume <lguillaume@berklee.edu>
List: tech-pkg
Date: 04/21/2004 01:22:43
>> sed <libstdc++.la.orig >libstdc++.la -e 's,^\(libdir.*\)/.,\1,'


This workaround seems to have fixed many problems. Both qt3-libs and 
qt3-tools compiled without a hitch, whereas before there were problems.

But the arts package still has linking problems. It seems to be unable 
to find certain Arts:: classes....

.libs/artscbackend.o(.gnu.linkonce.t._ZN8ReceiverD0Ev+0x22c): In 
function `Receiver::~Receiver [in-charge deleting]()':
: warning: undefined reference to `Arts::Object_base::~Object_base 
[not-in-charge]()'
.libs/artscbackend.o(.gnu.linkonce.t._ZN8Receiver4readEPhi+0x171): In 
function `Receiver::read(unsigned char*, int)':
: warning: undefined reference to `Arts::Dispatcher::the()'
.libs/artscbackend.o(.gnu.linkonce.t._ZN8Receiver4readEPhi+0x1e5): In 
function `Receiver::read(unsigned char*, int)':
: warning: undefined reference to `Arts::Dispatcher::the()'



... Then it eventually fails as shown below. I have no idea how to fix 
this. Any help would be great. This package compiles just fine on 
NetBSD, so I suspect it's a buildlink on Linux problem...

make[2]: Entering directory `/usr/pkgsrc/audio/arts/work/arts-1.2.2/qtmcop'
/usr/pkg/qt3/bin/moc ./qiomanager_p.h -o qiomanager_p.moc
if /bin/sh ../libtool --silent --mode=compile --tag=CXX g++ 
-DHAVE_CONFIG_H -I. -I. -I.. -I../mcop -I/usr/pkg/include 
-I/usr/pkg/qt3/include -I/usr/pkg/X11R6/include  -I/usr/pkg/include 
-I/usr/pkg/X11R6/include -I../libltdl -I/usr/pkg/qt3/include 
-DQT_THREAD_SUPPORT -I/usr/pkg/include -I/usr/pkg/qt3/include 
-DGLX_GLXEXT_LEGACY -I/usr/include -I/usr/pkg/include/freetype2 
-D_REENTRANT -pthread -I/usr/pkg/include/glib/glib-2.0 
-I/usr/pkg/lib/glib-2.0/include    -Wnon-virtual-dtor -Wno-long-long 
-Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align 
-Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings 
-DNDEBUG -DNO_DEBUG -O2 -O2 -I/usr/pkg/include -I/usr/pkg/qt3/include 
-DGLX_GLXEXT_LEGACY -I/usr/include -I/usr/pkg/include/freetype2 
-Wformat-security -Wmissing-format-attribute -fno-exceptions 
-fno-check-new -fno-common  -ftemplate-depth-99  -MT qiomanager.lo -MD 
-MP -MF ".deps/qiomanager.Tpo" -c -o qiomanager.lo qiomanager.cc; \
then mv -f ".deps/qiomanager.Tpo" ".deps/qiomanager.Plo"; else rm -f 
".deps/qiomanager.Tpo"; exit 1; fi
/bin/sh ../libtool --silent --mode=link --tag=CXX g++ 
-Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 
-D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W 
-Wpointer-arith -Wwrite-strings -DNDEBUG -DNO_DEBUG -O2 -O2 
-I/usr/pkg/include -I/usr/pkg/qt3/include -DGLX_GLXEXT_LEGACY 
-I/usr/include -I/usr/pkg/include/freetype2 -Wformat-security 
-Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common 
-ftemplate-depth-99   -L/usr/pkg/qt3/lib -L/usr/pkg/lib 
-Wl,-R/usr/pkg/lib -Wl,-R/usr/pkg/qt3/lib -L/usr/lib -Wl,-R/usr/lib 
-L/usr/pkg/X11R6/lib -Wl,-R/usr/pkg/X11R6/lib -o libqtmcop.la -rpath 
/usr/pkg/lib -no-undefined -Wl,--no-undefined 
-Wl,--allow-shlib-undefined -version-info 1:0   -L/usr/pkg/qt3/lib 
-L/usr/pkg/qt3/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib 
-Wl,-R/usr/pkg/qt3/lib -L/usr/lib -Wl,-R/usr/lib -L/usr/pkg/X11R6/lib 
-Wl,-R/usr/pkg/X11R6/lib -L/usr/pkg/X11R6/lib qiomanager.lo 
../mcop/libmcop.la -lqt-mt  -lz -lpng -lz -lm -lXext -lX11  -lSM -lICE 
-lpthread
shlibtool: link: warning: 
`/usr/lib/gcc-lib/i486-slackware-linux/3.2.3/../../../libstdc++.la' 
seems to be moved
grep: /usr/pkgsrc/audio/arts/work/.buildlink/lib/libstdc++.la: No such 
file or directory
/bin/sed: can't read 
/usr/pkgsrc/audio/arts/work/.buildlink/lib/libstdc++.la: No such file or 
directory
shlibtool: link: 
`/usr/pkgsrc/audio/arts/work/.buildlink/lib/libstdc++.la' is not a valid 
libtool archive
make[2]: *** [libqtmcop.la] Error 1

Ben Collver wrote:

> If you are using Slackware 9.1, you might have run into the same problem I
> have.  Here is a brute force workaround:
> 
> 1)
> Remove all your packages that have libtool libraries that depend on libstdc++.
> 
> 2)
> cd /usr/lib
> cp libstdc++.la libstdc++.la.orig
> sed <libstdc++.la.orig >libstdc++.la -e 's,^\(libdir.*\)/.,\1,'
> 
> 3)
> Rebuild the packages that you removed.
> 
> Cheers,
> 
> Ben
> 
> On Wed, Apr 14, 2004 at 01:27:47AM -0400, Louis  Guillaume wrote:
> 
>>Hello,
>>
>>I've been having some terrible problems compiling various packages, 
>>appartently due to some kind of buildlink/libstdc++ problems.
>>
>>This is on Slackware.
>>
>>Either the build will fail at some point because it can't find 
>><package>/work/.buildlink/lib/libstdc++.la or there are really verbose 
>>"undefined reference" warnings or both.
>>
>>Is there some secret to get buildlink and libstdc++ to play nice?
>>
>>I'm trying to get meta-pkgs/kde3 built for Linux and it doesn't get very 
>>far. I've been able to get qt3-libs and qt3-tools to build. I'm not sure 
>>I can trust these builds, however, because of some "undefined reference" 
>>warnings. There's no testing either, because arts won't build for the 
>>same problem.
>>
>>These slackware packages are installed...
>>
>>$ ls /var/adm/packages|grep gcc
>>gcc-3.2.3-i486-2
>>gcc-g++-3.2.3-i486-1
>>
>>... I kind of expected those to handle these issues. It seems that 
>>sometimes buildlink is able to make itself aware of libstdc++.la and 
>>sometimes it isn't, perhaps depending on the package.
>>
>>For some reason, though these problems don't exist on NetBSD, so I don't 
>>believe I can blame buildlink.
>>
>>It would appear that I'm missing something important to get things 
>>working smoothly on Linux. Any help would be greatly appreciated.
>>
>>Thanks,
>>
>>Louis
>>

-- 
Louis Guillaume
Administrative Systems
Berklee College of Music
lguillaume@berklee.edu