bjam `Невозможно найти файл или цель с именем 'libboost_python'` - PullRequest
1 голос
/ 23 мая 2011

Чего мне не хватает в моей конфигурации / установке Boost.Python?

Я пытаюсь скомпилировать учебный пример, и я получаю сообщение об ошибке с libboost_python не найдено

cd /usr/share/doc/libboost1.42-doc/examples/libs/python/example/tutorial
bjam
error: Unable to find file or target named
error:     'libboost_python'
error: referred from project at
error:     '.'

Но библиотека есть, ldconfig.real запущено:

/usr/lib/libboost_python.a -> libboost_python-py27.a
/usr/lib/libboost_python-mt-py26.a -> libboost_python-py26.a
/usr/lib/libboost_python-mt-py26.so -> libboost_python-py26.so.1.42.0
/usr/lib/libboost_python-mt-py27.a -> libboost_python-py27.a
/usr/lib/libboost_python-mt-py27.so -> libboost_python-py27.so.1.42.0
/usr/lib/libboost_python-py26.a
/usr/lib/libboost_python-py26.so -> libboost_python-py26.so.1.42.0
/usr/lib/libboost_python-py26.so.1.42.0
/usr/lib/libboost_python-py27.a
/usr/lib/libboost_python-py27.so -> libboost_python-py27.so.1.42.0
/usr/lib/libboost_python-py27.so.1.42.0
/usr/lib/libboost_python.so -> libboost_python-py27.so

Я использую стандартные пакеты libboost из Ubuntu 11.04.

Мой user-config.jam равен

using python : 2.7 ;

Ответы [ 3 ]

0 голосов
/ 05 февраля 2012

У вас может быть файл конфигурации сайта с чем-то вроде следующего:

using boost : 1.48 : <include>/usr/include/boost-1_48 <library>/usr/lib ;

(вам нужен бит , не уверен почему)

тогда вы можете делать вещинапример.

project foo 
        : <library>/boost//python

В долгосрочной перспективе облегчает работу, поскольку в какой-то момент вам неизбежно придется менять версию буста.

0 голосов
/ 10 февраля 2013

У меня была похожая проблема в Ubuntu 12.04, где я установил все библиотеки boost как пакет. Я нашел решение здесь:

http://jayrambhia.wordpress.com/2012/06/25/configuring-boostpython-and-hello-boost/

Оказывается, вам вообще не нужно использовать bjam. Достаточно makefile. Я повторю решение по вышеуказанной ссылке здесь:

1.) Установите пакет libboost-python

2.) Создайте исходный файл hello world с именем 'hello_ext.c':

char const* greet()
{
    return "hello, world";
}

#include<boost/python.hpp>
BOOST_PYTHON_MODULE(hello_ext)
{
   using namespace boost::python;
   def("greet",greet);
}

3.) Создайте make-файл:

PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)
# location of the Boost Python include files and library
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
# compile mesh classes
TARGET = hello_ext
$(TARGET).so: $(TARGET).o
g++ -shared -Wl,--export-dynamic $(TARGET).o -L$(BOOST_LIB) -lboost_python -L/usr   /lib/python$(PYTHON_VERSION)/config -lpython$(PYTHON_VERSION) -o $(TARGET).so
$(TARGET).o: $(TARGET).c
g++ -I$(PYTHON_INCLUDE) -I$(BOOST_INC) -fPIC -c $(TARGET).c

4.) Сделать

make

5.) Готов к использованию. В питоне:

import hello_ext
print hello_ext.greet()
0 голосов
/ 23 мая 2011

Все еще не уверен, что это правильный путь, кажется немного хакерским, но помогло следующее:

В Jamroot файл заменен

project
  : requirements <library>libboost_python ;

на

project
  : requirements <library>/usr/lib/libboost_python.so ;
...