Не могу найти библиотеку наддува - PullRequest
4 голосов
/ 24 марта 2011

Это очень простой вопрос, я пишу только потому, что уже потратил некоторое время на него. Это то, что я сделал до сих пор:

  1. Скачал и скомпилировал библиотеку наддува:

    sudo ./bootstrap.sh и sudo ./bjam install

    Таким образом, он был установлен в /usr/local/lib.

  2. В исходном коде я добавил только:

    #include <boost/asio.hpp>
    using boost::asio::ip::tcp
    
  3. Я компилирую с:

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

  4. Однако, ldd -d ./libagent.so дает мне:

    libboost_system.so.1.46.1 => not found

  5. Но не выдается никакой ошибки, при использовании -lboost_system и ls /usr/local/lib меня среди прочего получает:

    libboost_system.so
    libboost_system.a

Что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 24 марта 2011

Инструмент ./bjam install также запускал инструмент ldconfig(8)?ldconfig(8) необходимо запустить после установки новых библиотек для обновления кэшей, используемых ld.so(8) во время выполнения программы.

2 голосов
/ 24 марта 2011

Вы должны скомпилировать его с помощью:

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

Это заставляет искать библиотеку надстройки в / usr / local / lib во время выполнения, опция -L заставляет ее искать только в / usr / local /lib во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...