如何构建 boost 1.45 通用二进制文件?豹/雪豹?
3 回答
要在 OSX 10.6 上构建 4 路通用 boost 静态二进制文件,我执行以下操作:
从 boost 网站下载 boost。
将存档解压缩
cd
到boost_x_xx_x
文件夹中(x_xx_x
您正在使用的 boost 版本在哪里)。跑:
./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 ;
您要构建哪些库?它在这里(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
- 升压波
那么您要构建哪一个?
为了在 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 版本。因此,您最好根据上述答案尝试各种变体。