6

如何构建 boost 1.45 通用二进制文件?豹/雪豹?

4

3 回答 3

11

要在 OSX 10.6 上构建 4 路通用 boost 静态二进制文件,我执行以下操作:

  1. 从 boost 网站下载 boost。

  2. 将存档解压缩cdboost_x_xx_x文件夹中(x_xx_x您正在使用的 boost 版本在哪里)。

  3. 跑:

    ./bootstrap.sh进而

    # The name of the Boost.Jam program changed from "bjam" to "b2" in Boost 1.47.0

    # Replace "b2" with "bjam" if you are compiling a version <= 1.46.1

    ./b2 macosx-version=10.6 macosx-version-min=10.4 architecture=combined threading=multi link=static address-model=32_64

这将编译除 Boost.MPI(需要该--with-mpi选项)之外的所有内容。构建产品投入使用./stage


更新:如果您安装了 XCode 4,那么您必须执行一个额外的步骤。XCode 4 不附带能够以 PowerPC 为目标的编译器或库。不幸的是,XCode 4 附带的编译器成为 Boost 使用的默认编译器。要强制使用 XCode 3 附带的编译器,您必须执行一个额外的步骤。请注意,如果 XCode 3 不在您的系统上,则必须安装它。

在运行之后./bootstrap.sh和运行之前b2,打开:

./tools/build/v2/user-config.jam

将以下行添加到该文件。这指示 boost 使用 XCode 3 中的 g++-4.2:

using darwin : : /Developer-old/usr/bin/g++-4.2 ;
于 2011-02-04T03:51:54.573 回答
1

您要构建哪些库?它在这里(http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html)说:

大多数 Boost 库都是仅头文件:它们完全由包含模板和内联函数的头文件组成,并且在链接时不需要单独编译的库二进制文件或特殊处理。

您确实需要构建的是:

  • Boost.文件系统
  • Boost.GraphParallel
  • Boost.IOStreams
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python
  • 升压正则表达式
  • Boost.序列化
  • 升压信号
  • 升压系统
  • Boost.Thread
  • 升压波

那么您要构建哪一个?

于 2011-01-21T05:46:13.907 回答
0

为了在 Tiger 下构建通用二进制文件,我在我的主目录 ( ) 中创建了user-config.jam文件$HOME

using darwin : : : <compileflags>"-arch ppc -arch i386 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk" ;

然后我像往常一样用 Jam 构建 Boost。可能这仍然适用于较旧的 Mac OS X 版本。

另一种方法是使用 MacPorts,但在这种情况下,所有 Boost 依赖项都必须重新构建为通用二进制文件,这并不总是可能的(我在 Tiger 上使用过两次但失败了)。

对于这两种情况,您都需要随 XCode 一起安装 MacOSX10.4u.sdk。

[编辑]

要构建三种架构,您最好阅读类似问题的答案。简而言之,构建选项user-config.jam取决于您和目标 Mac OS X 版本。因此,您最好根据上述答案尝试各种变体。

于 2011-01-21T05:55:54.663 回答