【问题标题】:Boost.Python tutorial in Ubuntu 10.04Ubuntu 10.04 中的 Boost.Python 教程
【发布时间】:2010-06-09 20:11:48
【问题描述】:

我下载了最新版本的 Boost,我正在尝试在 Ubuntu 10.04 上启动并运行 Boost.python 教程:http://www.boost.org/doc/libs/1_43_0/libs/python/doc/tutorial/doc/html/python/hello.html

我导航到正确的目录,运行“bjam”并使用默认设置进行编译。我还没有创建 bjam 配置文件。编译似乎已经奏效,但现在我不知道如何在我的 python 脚本中包含这些文件。当我尝试运行 python hello world 脚本时,它给了我这个错误:

Traceback (most recent call last):
  File "./hello.py", line 6, in <module>
    import hello_ext
ImportError: libboost_python.so.1.43.0: cannot open shared object file: No such file or  directory

有人知道怎么回事吗?

【问题讨论】:

    标签: c++ python boost-python


    【解决方案1】:

    你是如何安装 boost 的? 假设您使用以下内容:http://www.boost.org/doc/libs/1_43_0/more/getting_started/unix-variants.html#easy-build-and-install

    liboost_python 分片库将安装在 /usr/local/lib 中

    要运行 hello.py 示例,请尝试以下操作:

    LD_LIBRARY_PATH=/usr/local/lib python ./hello.py
    

    【讨论】:

    • 好的,它开始工作了。谢谢。你能解释一下为什么没有 LD_LIBRARY_PATH 就不能运行它吗?
    • 在 man ld.so 的说明部分中,您有以下信息: - 按以下顺序搜索程序所需的必要共享库: - 使用环境变量 LD_LIBRARY_PATH - 从缓存中文件 /etc/ld.so.cache 包含先前在扩充库路径中找到的候选库的编译列表 - 在默认路径 /lib 中,然后是 /usr/lib。由于您的引导共享库安装在 /usr/local/lib 中,因此您有以下选项: - 使用 LD_LIBRARY_PATH 或 - 将 /usr/local/lib 添加到共享库缓存(参见 man ldconfig)
    【解决方案2】:

    我没有使用 Boost Python 库的经验,但由于错误状态,它无法找到 libboost_python 共享对象。

    这里有几个选项(可能还有更多):

    1. 将 .so 放在 /usr/local/lib 中。
    2. 将 .so 放在 /usr/lib 中。这可能是个坏主意。
    3. 在执行前运行export LD_LIBRARY_PATH=/path_to_so/

    【讨论】:

    • 我可以把它和我的python脚本放在同一个目录吗?
    • 不,你不能...在 Windows 中,DLL 加载过程开始在执行文件夹中查找 DLL,但在 Linux 中,没有发生类似的情况(据我所知)。跨度>
    【解决方案3】:

    你安装了 boost 吗?仅仅编译它还不足以将库安装在运行程序所需的位置。

    【讨论】:

    • 是的,安装了 boost。在我的 c++ 模块中包含 boost 头文件,并使用 bjam 进行编译。我很确定一切正常。我现在只需要弄清楚如何将它导入python。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2012-06-24
    • 2011-08-30
    相关资源
    最近更新 更多