Я недавно обнаружил Boost.Python, и я пытаюсь выяснить, как это работает. Я попытался пройти через the tutorial on the official website. Тем не менее, я получилКак использовать Boost.Python
link.jam: No such file or directory
при запуске bjam как в примере (который, кажется, просто предупреждение), и
Traceback (most recent call last):
File "hello.py", line 7, in <module>
import hello_ext
ImportError: libboost_python.so.1.55.0: cannot open shared object file: No such file or directory
при запуске питона hello.py.
Я также попытался скомпилировать модуль, как описано в another tutorial с аналогичными результатами. Я запускаю Ubuntu14.04 с boost1.55, скомпилированным.
Я попытался скомпилировать следующее:
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
с помощью следующей команды из командной строки:
g++ -o hello_ext.so hello.cpp -I /usr/include/python2.7/ -I /home/berardo/boost_1_55_0/ -L /usr/lib/python2.7/ -L /home/berardo/boost/lib/ -lboost_python -lpython2.7 -Wl, -fPIC -expose-dynamic
, который до сих пор дает мне:
/usr/bin/ld: impossibile trovare : File o directory non esistente
collect2: error: ld returned 1 exit status.
Вы создали свои библиотеки ускорения с включенной библиотекой Python? Существуют ли соответствующие бинарные файлы python для повышения и находятся ли они в пути поиска библиотеки? Почему бы просто не использовать пакеты boost, которые уже существуют для Ubuntu? Глядя на базу данных пакетов, кажется, что boost 1.55 существует на Ubuntu 14.04 [link] (http://packages.ubuntu.com/trusty/libdevel/libboost1.55-all-dev). –
@ Dan Я установил библиотеки boost для python2.7, так как мне нужна эта версия. Однако я не смог понять, как это сделать со стандартной базой данных Ubuntu. Просто для полноты я установил boost для использования программного обеспечения под названием hoomd, но у меня не было проблем с созданием последнего с повышением. – Rebrado
Хмм, глядя на команду, которую вы использовали при попытке построить вручную, я вижу '-Wl, -fPIC -expose -динамический' в конце. Это не кажется правильным. '-fPIC' является компилятором. '-Wl, option' передает опцию компоновщику. Линкере следует передать опцию '--export-dynamic'. Между запятой и опцией не должно быть пробела. –