I\'m trying to compile a linux program, id3v2, and it says it is can\'t find the appropriate library:
id3v2: error while loading shared libraries: libid3-3.8.so
I got the same error you did, and after reading the solutions mentioned here, I resolved the problem (on Ubuntu 8) with:
sudo ln -s /usr/local/lib/libid3-3.8.so.3 /usr/lib/libid3-3.8.so.3
Symlinks on libraries work fine, as long as the final target they trace to exists and is accessible.
You have built a dynamically-linked executable, that wishes to be linked against libid3-3.8.so.3 at execution time. This was likely linked during the build phase with something like -L/path/to/libid3/directory -lid3
.
You have a few options to make libid3
available, in generally decreasing order of preference (since you didn't mention where the file was, I can only be general):
libid3*
in a directory listed in /etc/ld.so.conf
(or /lib
or /usr/lib
)libid3*
to a directory listed in /etc/ld.so.conf
(or /lib
or /usr/lib
) (defaults)libid3*
to /etc/ld.so.conf
LD_LIBRARY_PATH=/directory/path/to/libid3*
before running your id3v2 executable.id3v2
statically. (It will work, but don't bother.)After any of the first 3, rerun ldconfig
so the linker cache is updated. (You can then run ldconfig -v
to verify it's resolvable.)
Note those aren't steps, they're options. You only need to do 1 of them.
Glad you updated the title. #include
directives have nothing to do with linking.
This solved the issue Just add /usr/local/lib to /etc/ld.so.conf (unless it's already in there; only put it once), then run ldconfig.