我正在使用Ubuntu 9.10 beta,其存储库包含boost 1.38。我想构建一个hello-world示例。我按照这里的说明(http://www.boost.org/doc/libs/1_40_0/libs/python/doc/tutorial/doc/html/python/hello.html),找到了示例项目,并发出了“bjam”命令。我已经安装了bjam和boost-build。
我得到以下输出:
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
我不太了解Boost(这是我自己的探索性练习),以了解为什么包含的Jamroot中的python-extension宏无效。我从安装目录运行这个例子,所以我没有改变Jamroot的use-project设置。
作为一个附带问题,如果我只是不知不觉地在任意目录中启动项目,我将如何编写我的jamroot?
答案 0 :(得分: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的lenny上进行了修正......大多数情况下。 libboost_python中的示例仍然引用boost_python-mt而不是boost_python,但/usr/lib/libboost_python.so存在但不存在/usr/lib/libboost_python-mt.so。
希望Ubuntu很快会有同样的解决方案,下一个用户也不会发现这个...我知道你的问题的答案,因为我确实不久前有完全相同的问题。