2009-10-14 27 views
4

我正在使用Ubuntu 9.10 beta,其存儲庫包含boost 1.38。我想建立你好世界的例子。我按照這裏的說明(http://www.boost.org/doc/libs/1_40_0/libs/python/doc/tutorial/doc/html/python/hello.html),找到了示例項目,併發布了「bjam」命令。我已經安裝了bjam和boost-build。如何在Ubuntu 9.10上構建Boost.Python示例?

我得到以下輸出:

Jamroot:18: in modules.load 
rule python-extension unknown in module Jamfile</usr/share/doc/libboost1.38-doc/examples/libs/python/example>. 
/usr/share/boost-build/build/project.jam:312: in load-jamfile 
/usr/share/boost-build/build/project.jam:68: in load 
/usr/share/boost-build/build/project.jam:170: in project.find 
/usr/share/boost-build/build-system.jam:248: in load 
/usr/share/boost-build/kernel/modules.jam:261: in import 
/usr/share/boost-build/kernel/bootstrap.jam:132: in boost-build 
/usr/share/doc/libboost1.38-doc/examples/libs/python/example/boost-build.jam:7: in module scope 

我不知道有足夠的瞭解提升(這是一個探索性的鍛鍊我自己)理解爲什麼在包括Jamroot中的蟒蛇擴展宏是無效的。我從安裝目錄運行這個例子,所以我沒有改變Jamroot的use-project設置。作爲一個側面的問題,如果我只是在一個任意的目錄中開始一個項目,我會怎麼寫我的jamroot?

回答

4

問題來自使用Ubuntu軟件包,而不是從源代碼編譯的boost。你必須編輯你Jamroot來說它使用全局libboost-python,而不是在相對boost源代碼樹中查找lib。

綜上所述,你應該有這些線在你Jamroot中的開頭:

using python ; 
lib libboost_python : : <name>boost_python ; 
project : requirements <library>libboost_python ; 

據報道作爲Debian的一個錯誤,修正至少與libboost-python1.40萊尼...居多。 libboost_python中的示例仍然指代boost_python-mt而不是boost_python,但存在/usr/lib/libboost_python.so,但不包含/usr/lib/libboost_python-mt.so。

希望Ubuntu很快會有相同的修復程序,下一個用戶不會偶然發現這一點...我知道你的問題的答案,因爲我不知道確實不久前有完全相同的問題。

+0

我相信這是由kriss提到的Debian bug報告:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452410 – gotgenes 2010-02-08 03:35:54