Tom Peck wrote:
> > > Anybody know what to do from here? I'm so close!!
> > ln -s /usr/local/lib/libshout.a /usr/lib
>
> no luck, still get:
>
> checking for shout_init_connection in -lshout... (cached) no
>
> on ./configure
>
> Only mention of shout in config.log file:
>
> configure:1346: checking for mkdir
> configure:1399: checking for shout_init_connection in -lshout
> configure:1447: checking for libc5
There is the problem - it didn't find libshout before you installed
libshout, and it saved that result. Remember when I said remove
config.cache before re-running ./configure? No? That's ok - but that's
the problem. 'rm config.cache ; ./configure'
> at the top of the Makefile created by ./configure:
[...]
> Could I put it in there somewhere?
>
> I tried - I edited the Makefile file in the root, and also in the
> main/ directory, adding the libshout.a file to be included in the
> binary, and then when I did a 'make' it showed these lines:
>
> make -C main
[...]
> g++ -o obsd -Lutils -Lxmit -Lvolman -Lmpegutils -Lnet
> -L/usr/lib/mysql -L/usr/local/lib/mysql main/libshout.a
> main/libmain.a xmit/libxmit.a volman/libvolman.a utils/libutils.a
> mpegutils/libmpegutils.a net/libnet.a -lmysqlclient -lpthread
> -lmysqlclient -lpthread -lm
Well, here's what you've done - you just compiled libshout.a into obsd.
However, just because the code is there doesn't mean it's going to get
called. You were actually on the right track, but there's another file
called 'config.h' that has a '#define HAS_LIBSHOUT' which would have to
have been uncommented.
And that's not the correct way to compile against a library ... instead
of compiling the library itself into the executable, you just needed to
add '-lshout' into $LIBS. ld, the linker, would have resolved it
correctly, and then only what is actually required is included.
> Are you sure it should be the libshout.a - and not the .so ?
Yes. Libraries take one of two forms, either as a ".a" or as a
".so". I think I may have said something confusing (er, wrong)
before. =)
When you compile a program, the linker, ld, looks for a .so version of
the library. When you run the program, the dynamic linker, ld.so, tries
to resolve the references to the .so that ld included in the
executable. The .a library is never used, unless you are compiling
staticly. Generally, only Motif programs are compiled staticly (such as
Netscape) since Motif was closed sourced, expensive, and generally not
available for Linux (due to the cost). This is actually why GTK was
written -- to eliminate a dependency on Motif. Too bad they didn't
really know what they were doing. ;-)
But I digress...
Chris
--
Oh My God! They Killed init! You Bastards!!
make install; not war
_______________________________________________
Obs-dev mailing list
[EMAIL PROTECTED]
http://www.freeamp.org/mailman/listinfo/obs-dev