My first experience as a libtool user: "A pain in the ar*se"
I was installing 2 packages that use libtool: The first one I had to hack the Makefile. It was complaining about a library that WAS there and it said it wasn't. The second one I don't know what to hack, I have this error: --- [EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX --mode=link g++ -W -Wall -I./src -g -O2 -pthread -L/home/mysql/robocup/lib -L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o netif.o object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o monitor.o audio.o serializer.o serializerplayerstdv1.o serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o serializercoachstdv7.o serializercoachstdv8.o serializeronlinecoachstdv1.o serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o serializeronlinecoachstdv8.o serializercommonstdv1.o serializercommonstdv7.o serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o initsender.o libimports.o -lrcsstimer -lrcssclangparser -lrcsspcomparser -lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil -lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase -lboost_filesystem -lz -lm -ldl libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' was moved. libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' was moved. libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la' or unhandled argument `/home/mysql/lib/librcsserror.la' -- again the bloody `/home/mysql/robocup/lib/librcsserror.la' is in place. And why the heck is it searching for `/home/mysql/lib/librcsserror.la' if that directory doesn't exist and I didn't specify that anywhere? Really it makes me wonder if this multiplaform building isn't just a cliche, and it's worse than just making programmers provide a separate package for each platform. -- View this message in context: http://www.nabble.com/My-first-experience-as-a-libtool-user%3A-%22A-pain-in-the-ar*se%22-tp14424239p14424239.html Sent from the Gnu - Libtool - Discuss mailing list archive at Nabble.com. ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: My first experience as a libtool user: "A pain in the ar*se"
Hello bapluda, * bapluda wrote on Wed, Dec 19, 2007 at 09:08:21PM CET: > > [EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX > --mode=link g++ -W -Wall -I./src -g -O2 -pthread -L/home/mysql/robocup/lib > -L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o netif.o > object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o > monitor.o audio.o serializer.o serializerplayerstdv1.o > serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o > serializercoachstdv7.o serializercoachstdv8.o serializeronlinecoachstdv1.o > serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o > serializeronlinecoachstdv8.o serializercommonstdv1.o serializercommonstdv7.o > serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o > initsender.o libimports.o -lrcsstimer -lrcssclangparser -lrcsspcomparser > -lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil > -lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase > -lboost_filesystem -lz -lm -ldl > libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' > was moved. > libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' > was moved. > libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la' or > unhandled argument `/home/mysql/lib/librcsserror.la' Typically this happens when librcsserror.la was created with an argument of -rpath /home/mysql/lib but installed into the directory /home/mysql/robocup/lib instead (that accounts for the "was moved" warning), and there is another installed libtool library (*.la file) that you link against which lists /home/mysql/lib/librcsserror.la as its dependency (that accounts for the error). The solution to both problems is to specify the right to-be-installed location when creating librcsserror.la in the first place. If you use Automake, then that should typically work all by itself, if you don't, then I can likely point at what's wrong if you post the Makefile bits relevant for creation of librcsserror.la. Please note that you should list dependent uninstalled libraries (it doesn't look like you have them, but I can't be sure yet) as ../relative/path/libfoo.la Hope that helps. Cheers, Ralf ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: rm -f
On Sun, Dec 16, 2007 at 10:04:59AM +0100, Ralf Wildenhues wrote: > Hello, > > * Patrick Welche wrote on Fri, Dec 14, 2007 at 08:58:51PM CET: > > On Fri, Dec 14, 2007 at 12:27:48PM -0700, Eric Blake wrote: > > > > > > The general idiom for this is 'rm -f dummy $files', so that even if $files > > > is empty, you are still passing an argument to rm, and the -f avoids > > > failure on the dummy argument. > > > > Elegant! > > Only if you have a dummy file to remove. In libtool it's easier to just > add > test -z "$files" || $RM $files > > as appropriate. Which tests are failing for you, Patrick? I assume > this is NetBSD? In fact it seems to come from line 6202/6203 in libltdl/config/ltmain.m4sh: 6194 if ${skipped_export-false}; then 6195func_echo "generating symbol list for \`$libname.la'" 6196export_symbols="$output_objdir/$libname.exp" 6197$opt_dry_run || $RM $export_symbols 6198libobjs=$output 6199# Append the command to create the export file. 6200test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 6201eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 6202if test -n "$output"; then 6203 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 6204fi 6205 fi Do we want to delete $output or $last_robj? Cheers, Patrick ___ http://lists.gnu.org/mailman/listinfo/libtool
Re: My first experience as a libtool user: "A pain in the ar*se"
Ralf Wildenhues wrote: > > Hello bapluda, > > * bapluda wrote on Wed, Dec 19, 2007 at 09:08:21PM CET: >> >> [EMAIL PROTECTED]:~/temp/rcssserver-11.1.2/src> /bin/sh ../libtool --tag=CXX >> >> --mode=link g++ -W -Wall -I./src -g -O2 -pthread >> -L/home/mysql/robocup/lib >> -L/home/mysql/boost/lib -o rcssserver hetroplayer.o main.o field.o >> netif.o >> object.o xmlreader.o landmarkreader.o coach.o bodysensor.o player.o >> monitor.o audio.o serializer.o serializerplayerstdv1.o >> serializerplayerstdv7.o serializerplayerstdv8.o serializercoachstdv1.o >> serializercoachstdv7.o serializercoachstdv8.o >> serializeronlinecoachstdv1.o >> serializeronlinecoachstdv6.o serializeronlinecoachstdv7.o >> serializeronlinecoachstdv8.o serializercommonstdv1.o >> serializercommonstdv7.o >> serializercommonstdv8.o referee.o visual.o bodysender.o fullstatesender.o >> initsender.o libimports.o -lrcsstimer -lrcssclangparser >> -lrcsspcomparser >> -lrcssresultsaver -lrcssplayerparam -lrcssserverparam -lrcssutil >> -lrcssconfparser -lrcsslib -lrcsserror -lrcssnet -lrcssgz -lrcssbase >> -lboost_filesystem -lz -lm -ldl >> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' >> was moved. >> libtool: link: warning: library `/home/mysql/robocup/lib/librcsserror.la' >> was moved. >> libtool: link: cannot find the library `/home/mysql/lib/librcsserror.la' >> or >> unhandled argument `/home/mysql/lib/librcsserror.la' > > Typically this happens when librcsserror.la was created with an argument > of > -rpath /home/mysql/lib > > but installed into the directory > /home/mysql/robocup/lib > > instead (that accounts for the "was moved" warning), and there is > another installed libtool library (*.la file) that you link against > which lists > /home/mysql/lib/librcsserror.la > > as its dependency (that accounts for the error). > > The solution to both problems is to specify the right to-be-installed > location when creating librcsserror.la in the first place. > > If you use Automake, then that should typically work all by itself, if > you don't, then I can likely point at what's wrong if you post the > Makefile bits relevant for creation of librcsserror.la. > > Please note that you should list dependent uninstalled libraries (it > doesn't look like you have them, but I can't be sure yet) as > ../relative/path/libfoo.la > > Hope that helps. > > Cheers, > Ralf > > > ___ > http://lists.gnu.org/mailman/listinfo/libtool > > Hi Ralf It helped! Thanks very much! First I rebuilt the package that creates librcsserror.la. And then I rebuilt the problem package and everything was smooth. But I still don't know how I could have possibly specified /home/mysql/lib the first time I built librcsserror.la . I used this command both times: ./configure --prefix=$RCSSBASE --with-boost=$BOOST_ROOT And RCSSBASE is set by my .bashrc to "$HOME/robocup" Cheers Ian -- View this message in context: http://www.nabble.com/My-first-experience-as-a-libtool-user%3A-%22A-pain-in-the-ar*se%22-tp14424239p14443591.html Sent from the Gnu - Libtool - Discuss mailing list archive at Nabble.com. ___ http://lists.gnu.org/mailman/listinfo/libtool
>> My first experience as a libtool user: "A pain in the ar*se"
> Really it makes me wonder if this multiplaform building isn't just a cliche, > and it's worse than just making programmers provide a separate package for > each platform. I totally understand your opinion and I must admit I am in the camp of these to say that I find... that libtool seems to ... complicate issues sometimes. :-) In a way I'd actually love to see libtool and pkg-config join forces so that a user only needs "both" of them, and thus only one of these. The .la files approach would be better tied together with what info a .pc file offers (I mention pkg-config here, because normally pkg-config gives me less problems as I just dump all my .pc files into one dir, whereas the .la files are scattered right next to the various .so files. pkg-config probably does less than libtool but I am mostly talking from a biased user opinion here) There however is one great advantage libtool actually has - this is helpful people. :-) Props to them for being able to maintain such a big shell script! = -- Powered by Outblaze ___ http://lists.gnu.org/mailman/listinfo/libtool