Hmmm, I guess I just assumed that since ldconfig had cached the absolute
path to the library, ld would not need to know the library path as well,
but for some reason it did.
What ultimately fixed the problem was hardcoding the -L /usr/local/lib
in the configure script, since it refused to pick up that directory any
Thanks for your help. As a point of curiosity, I'd still like to know
why ld would still need the -L /usr/local/lib if the full path to the
library is already in the cache?
UNIX Systems Engineer
--- Begin Message ---
> This may be a very simple fix, but so far I've found no solution. Just
> installed expat-1.95.5 in a FreeBSD 4.4 machine. The install went fine,
> and I verified that ldconfig had picked up the library:
> host# ldconfig -r | grep expat
> 73:-lexpat.4 => /usr/local/lib/libexpat.so.4
> However, I need to install other packages that require the expat
> library, and the configuration fails stating that the expat library
> cannot be found. In fact, just a simple test fails:
> host# ld -lexpat
> /usr/libexec/elf/ld: cannot find -lexpat
How about ld -L/usr/local/lib -lexpat? Works fine here:
gabby# ld -L /usr/local/lib -lexpat
/usr/libexec/elf/ld: warning: cannot find entry symbol _start; not setting
/usr/local/lib/libexpat.so: undefined reference to `memmove'
/usr/local/lib/libexpat.so: undefined reference to `memcpy'
/usr/local/lib/libexpat.so: undefined reference to `malloc'
/usr/local/lib/libexpat.so: undefined reference to `realloc'
/usr/local/lib/libexpat.so: undefined reference to `memset'
/usr/local/lib/libexpat.so: undefined reference to `free'
If some programs can't find it, it's probably because /usr/local/lib isn't
in their search path.
--- End Message ---