4

This is a very basic question, I only post because I've spent already some time into it. This is what I've done so far:

  1. Downloaded and compiled the boost library:

    sudo ./bootstrap.sh and sudo ./bjam install

    This way it was installed into /usr/local/lib.

  2. In my source code I've added only:

    #include <boost/asio.hpp>
    using boost::asio::ip::tcp
    
  3. I compile it with:

    g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -fPIC -lboost_system -shared -o libagent.so agent.cpp

  4. However, ldd -d ./libagent.so gives me:

    libboost_system.so.1.46.1 => not found

  5. But there is no error thrown, when using the -lboost_system and ls /usr/local/lib gets me among other things:

    libboost_system.so
    libboost_system.a

What am I missing?

Konrad Reiche
  • 27,743
  • 15
  • 106
  • 143

2 Answers2

3

Did the ./bjam install tool also run the ldconfig(8) tool? ldconfig(8) needs to be run after new libraries are installed to update the caches used by ld.so(8) at program execution time.

sarnold
  • 102,305
  • 22
  • 181
  • 238
1

You should compile it with:

g++ -I/usr/lib/jvm/java-6-openjdk/include -L/usr/local/lib -Wl,-rpath,/usr/local/lib -fPIC -lboost_system -shared -o libagent.so agent.cpp

This makes it look for the boost library in /usr/local/lib at runtime, the -L option only makes it look in /usr/local/lib at compile time.

Anya Shenanigans
  • 91,618
  • 3
  • 107
  • 122