Что мне не хватает в моей настройке/установке Boost.Python?
Я пытаюсь скомпилировать пример учебника, и я получаю ошибку с libboost_python
not found
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 ;
По-прежнему не уверен, что правильный путь, кажется, немного хакерский, но после этого помог:
В Jamroot
заменен файл
project
: requirements <library>libboost_python ;
с
project
: requirements <library>/usr/lib/libboost_python.so ;
У меня была аналогичная проблема на 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.) Создайте файл makefile:
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
make
5.) Готов к использованию. В python:
import hello_ext
print hello_ext.greet()
У вас может быть файл конфигурации сайта с примерно следующим:
using boost : 1.48 : <include>/usr/include/boost-1_48 <library>/usr/lib ;
(вам нужно бит <library> , не знаете почему)
тогда вы можете делать такие вещи, как.
project foo
: <library>/boost//python
В конечном итоге все упрощается, так как вам неизбежно придется в какой-то момент изменить версию boost.