如何解决bjam`找不到名为\'libboost_python\'的文件或目标
|| 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
我正在使用Ubuntu 11.04的默认libboost软件包。
我的user-config.jam
是
using python : 2.7 ;
解决方法
仍然不确定这是否是正确的方法,似乎一点点破烂,但以下方法有所帮助:
在
Jamroot
文件中替换
project
: requirements <library>libboost_python ;
与
project
: requirements <library>/usr/lib/libboost_python.so ;
,您可能会有一个类似于以下内容的site-config文件;
using boost : 1.48 : <include>/usr/include/boost-1_48 <library>/usr/lib ;
(您需要<库>位,不确定原因)
那么你可以做类似的事情。
project foo
: <library>/boost//python
从长远来看,这使事情变得容易,因为您不可避免地需要在某个时候更改boost版本。
,我在ubuntu 12.04上遇到了类似的问题,在其中我将所有Boost库安装为一个软件包。我在这里找到解决方案:
http://jayrambhia.wordpress.com/2012/06/25/configuring-boostpython-and-hello-boost/
事实证明,您根本不需要使用bjam。一个makefile就足够了。我将在这里重复上述链接的解决方案:
1.)安装libboost-python软件包
2.)创建一个名为\'hello_ext.c \'的hello world源文件:
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
5.)随时可用。在python中:
import hello_ext
print hello_ext.greet()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。