在Mac OS X上使用bjam(Boost.Build)构建Python扩展

时间:2010-08-31 15:01:27

标签: python macos boost

据我所知,这是怎么回事:

  • 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 -R具有的ld选项,所以我认为它是一个特殊版本,旨在允许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>../
    ;

它在Ububtu GNU / Linux上构建正常。

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

1 个答案:

答案 0 :(得分:3)

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