【问题标题】:Building a Python extension with bjam (Boost.Build) on Mac OS X在 Mac OS X 上使用 bjam (Boost.Build) 构建 Python 扩展
【发布时间】:2010-08-31 15:01:26
【问题描述】:

据我所知,发生了什么:

  • python.jam 中,它会计算出我正在使用的 Python 版本以及要查看的库目录;
  • 它将-Wl-R 参数添加到g++ 命令行以包含这些目录;
  • ld 命令抱怨它没有-R 选项。

所以要么 (a) 我的 ld 版本有缺陷,要么 (b) 我需要告诉 bjam 它需要使用不同的选项(可能是 -rpath?)或者不需要此选项。

我一定是遗漏了一些东西——我肯定不是历史上第一个尝试在 Mac OS X 上使用 Boost 构建 Python 扩展的人——但我不知道下一步该往哪里看。有什么提示吗?

更新:

我使用的命令是

bjam

如果我这样做bjam --version,我会得到

Boost.Build V2 (Milestone 12)
Boost.Jam 03.1.18

使用的工具集是 Mac OS X 上的默认工具集。

编译器是 Mac OS X 上的默认编译器(安装了开发者工具),即 GCC 版本 'i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1(Apple Inc. build 5664) '。

链接器是 Mac OS X 上的默认链接器,称为 ldld64,但它没有 GNU ld 具有的 -R 选项,所以我认为它是一个特殊版本旨在允许 Mac OS X 的框架或其他概念。它没有--version 选项。

有一个Jamfile,是这样的:

import python ;

python-extension _optimor :
    bill_python.cpp
    bill_record_python.cpp
    .. etc ...
    :
    <cxxflags>-fPIC
    ... etc ...
    <variant>debug:<define>DEBUG
    <include>/usr/include/python2.6
    <include>../
    ;

它可以在 Ubuntu GNU/Linux 上构建。

我对 Boost 或 bjam 本身不感兴趣;我唯一的要求是编译这个扩展,这样我就可以继续开发这个扩展是一个小而重要的部分的系统。

【问题讨论】:

  • 关于您的问题的信息不足,无法回答。我需要知道您是如何调用构建系统的,即您正在使用的命令以及您正在使用的工具集/编译器/sdk。

标签: python macos boost


【解决方案1】:

我不知道您使用的是哪个版本的 Boost。但问题的最可能原因是您使用通用的“gcc”工具集进行构建。有一个特殊的工具集用于构建 Apple 在 Xcode 中使用的 GCC 变体。尝试使用 bjam toolset=darwin 构建。

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多