2011-05-23 58 views
1

我在Boost.Python配置/安裝中缺少什麼?bjam`無法找到名爲'libboost_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 ; 
+0

我相信默認的Python是2.6,但你的普通libboost_python是Python 2.7版 - 所以嘗試在用戶config.jam中設置Python版本到Python 2.7,也許? – James 2011-05-23 14:04:50

+0

@Autopulated:添加用戶配置。果醬,沒有變化 – vartec 2011-05-23 14:24:35

+0

哦,這裏有一個想法:本教程的構建文件可能需要boost源代碼 - 就好像它們被設計爲與boost一起構建。如果你把libboost_python視爲一個普通的舊庫(也許,我敢說它,溝bjam),而不是作爲一個「項目」,我認爲它應該工作。 (但我絕不是bjam的專家!) – James 2011-05-23 14:50:19

回答

0

仍然不知道它這是正確的方式,似乎有點hackish的,但以下幫助:

Jamroot文件替換

project 
    : requirements <library>libboost_python ; 

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

你可以有一個像下面這樣的站點配置文件;

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

(你需要的<庫>位,不知道爲什麼)

那麼你可以做的東西一樣。

project foo 
     : <library>/boost//python 

從長遠來看,使事情變得更容易,因爲您在某些時候不可避免地需要更改升壓版本。

0

我在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.)準備使用。在蟒蛇:

import hello_ext 
print hello_ext.greet() 
相關問題