Where do the linker look for shared libraries?
Dan Nelson
dnelson at allantgroup.com
Wed Mar 2 12:55:33 PST 2005
In the last episode (Mar 02), Andreas Davour said:
> On Wed, 2 Mar 2005, Dan Nelson wrote:
> >In the last episode (Mar 02), Andreas Davour said:
> >>I've tried to compile and link a small game written with the
> >>Allegro API. For some odd reason the linker just don't understand
> >>how to resolve the symbols in the library. It just can't accept
> >>that the library is in a ".so" file and not an ".a" archive, and
> >>even when I point it out explicitly it still don't get it.
> >>
> >>This is my commandline:
> >>
> >>gcc main.o rotoAction.o rotoCog.o -o RotoCube.exe -lstdc++ -L/usr/local/lib/ -lalleg
> >>
> >>and the errors I get looks like this:
> >>
> >>/usr/local/lib//liballeg.so: undefined reference to `_poly_zbuf_atex_trans8'
> >>/usr/local/lib//liballeg.so: undefined reference to `_poly_scanline_atex_mask_lit32'
> >
> >This is the linker saying "there are symbols in liballeg.so that I
> >cannot find anywhere". Maybe you need to specify another library
> >along with liballeg? Are you using the allegro port?
>
> I have grep'ed for those symbols and they come from liballeg.so, no
> place else. That's one of the very confusing things with those errors.
A web search on "undefined reference _poly_zbuf_atex_trans8" comes up
with a couple hits, including a post that says you need to use the
allegro-config command to determine the correct flags and libraries to
link allegro. What does "allegro-config --libs" print? The demo
programs built by the allegro port must work, so you could always build
the port again and determine what flags it used.
> I'm using the allegro port. BTW, there is a linux-allegro port as well.
> Why is this needed if Allegro is a platform independant API?
For linux programs that might need the library (same API, different
ABI). I assume there's at least one in the ports tree somewhere.
--
Dan Nelson
dnelson at allantgroup.com
More information about the freebsd-questions
mailing list