Programs linked to wrong shared library.

Search this archive.

From: Zachary Thomas Walters (zachwalters@attbi.com)
Date: Tue 04 Feb 2003 - 01:05:57 IST


I just installed svgalib 1.4.3. "Make install" and "make demoprogs" gave
no errors, but when I tried to run the demo programs I was given an
error to the effect of "Error: cannot open shared library:
libvgagl.so.1: cannot open object  file: no such file or directory."
That is not a typo,  it is looking for the file "libvgagl.so.1" but
why?! I get the same error when I compile my own programs with "gcc
someprogram.c -o someprogram -lvga -lvgagl." Compiling gives no errors
but when I run the object file I am given the same error. The library
files are contained in /usr/local/lib which contains libvga.so,
libvga.so.1.4.3, libvgagl.so, libvgagl.so.1.4.3. I am pretty sure that
libvga.so and libvgagl.so are symbolic links to libvga.so.1.4.3 and
libvgagl.so.1.4.3, but I am not sure how to confirm this, I am still a
little new to linux. If I understand symbolic links correctly then the
kernel should "dereference" them before read or write operations, so
what does this mean when ld is asked to link to a symbolic link to a
shared library? I barely understand the mechanics of shared linkage. Is
a reference to libvgagl.so stored in the object file and then
"dereferenced" to libvgagl.so.1.4.3 upon loading? This is how I imagine
it should work, but when I open up my compiled object file with vim I
find that there is a reference to the mysterious file name
"libvgagl.so.1?!" Is this a problem with gcc? Does gcc version
egcs-2.91.66 truncate the name upon compilation and linkage? Would
replacing the symbolic links with hard links help? Or should I just
delete the symbolic links and rename libvga.so.1.4.3 and
libvgagl.so.1.4.3 to libvga.so and libvgagl.so respectively, I would
hate to loose the ability to know what version of the library I was
using simply by typing "ls /usr/local/lib/libvga*!" Could there be
duplicate libraries? I did have an older version of svgalib that came
with the distribution (Caldera OpenLinux eDesktop) but I could never
figure out where the libraries were. Any help would be greatly
appreciated!

--
Zach


------------------------------------------------------------------
Unsubscribe:  To:   listbot@svgalib.org
              Body: unsubscribe linux-svgalib


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:25 IST