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

发布于 2024-10-12 20:01:29 字数 37 浏览 3 评论 0原文

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

How to build boost 1.45 universal binaries? on leopard/ snow leopard ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2024-10-19 20:01:29

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

  1. 从 boost 网站下载 boost。

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

  3. 运行:

    ./bootstrap.sh 然后

    # Boost.Jam 程序的名称在 Boost 1.47.0 中从“bjam”更改为“b2”

    # 如果您正在编译 <= 1.46.1 版本,请将“b2”替换为“bjam”

    ./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 ;

To build 4-way universal boost static binaries on OSX 10.6 I do the following:

  1. Download boost from the boost website.

  2. Extract the archive and cd into the boost_x_xx_x folder (where x_xx_x is the version of boost you are using).

  3. Run:

    ./bootstrap.sh and then

    # 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

This will compile everything except for Boost.MPI (which requires the --with-mpi option). The build products get put in ./stage


UPDATE: If you have installed XCode 4, then there is an extra step that you must perform. XCode 4 does not come with compilers or libraries capable of targeting PowerPC. Unfortunately, the compilers that come with XCode 4 become the default compilers used by Boost. To force the use of the compilers that come with XCode 3, you must perform an extra step. Note that you must install XCode 3 if it is not on your system.

After running ./bootstrap.sh, and before running b2, open:

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

Add following line to that file. This instructs boost to use the g++-4.2 from XCode 3:

using darwin : : /Developer-old/usr/bin/g++-4.2 ;
鱼窥荷 2024-10-19 20:01:29

您想要构建哪些库?它在这里说(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.Regex
  • Boost.序列化
  • Boost.Signals
  • Boost.System
  • Boost.Thread
  • Boost.Wave

那么您要构建哪一个?

Which libraries are you trying to build? It says here (http://www.boost.org/doc/libs/1_45_0/more/getting_started/unix-variants.html) that:

Most Boost libraries are header-only:
they consist entirely of header files
containing templates and inline
functions, and require no
separately-compiled library binaries
or special treatment when linking.

The one that you do need to build are:

  • Boost.Filesystem
  • Boost.GraphParallel
  • Boost.IOStreams
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python
  • Boost.Regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.System
  • Boost.Thread
  • Boost.Wave

So which one are you trying to build?

沉鱼一梦 2024-10-19 20:01:29

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

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 版本。所以你最好根据上述答案尝试各种变体。

To build universal binaries under Tiger I was creating user-config.jam file in my home directory ($HOME):

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

And then I was building Boost as usual with Jam. Probably this should still work with older Mac OS X versions.

Another way is to use MacPorts but in this case all Boost dependencies have to be rebuilt as universal binaries which is not always possible (I've this on Tiger for two times but failed).

For both cases you need to have MacOSX10.4u.sdk installed with XCode.

[edit]

To build for three architectures you'd better read an answer to a similar question. Briefly, build options in user-config.jam depend on your and target Mac OS X versions. So you'd better try various variants based on the aforementioned answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文