Peter
Peter

Reputation: 1471

Changing the path to a dynamic library in an executable

I'm building my program with clang and its using an external library. I've been developing for a while with the binaries they provided (/usr/lib/libary.so), but I now want to move over to a more current version.

I downloaded the source code and built it, resulting in an include file and a new library (in my ~/library/build directory).

When compiling my code, I use

clang++ main.cpp -I ~/library/include -L ~/library/build/lib -llibrary

This includes the up to date header, and finds the correct library (I know it finds the correct library, because without the -L flag, I get an error saying 'undefined reference to NewlyIntroducedFunction').

However, when I try to run a.out, I get the error:

./a.out: symbol lookup error: ./a.out: undefined symbol: NewlyIntroducedFunction

Running ldd on ./a.out shows me the line:

library.so => /usr/lib/library.so

So I assume that, although at compile time the correct library is being used, at runtime it isn't. I added ~/library/build to the start of PATH and that didn't work.

What do I do to get the correct version of library.so found?

Upvotes: 0

Views: 250

Answers (1)

Srdjan Grubor
Srdjan Grubor

Reputation: 2675

Your LD_LIBRARY_PATH variable (library search path) is probably not correct

Upvotes: 2

Related Questions