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

时间:2011-01-21 05:26:55

标签: macos osx-leopard universal-binary boost-build

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

3 个答案:

答案 0 :(得分:11)

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

  1. 从推特网站下载推文。

  2. 将存档和cd解压缩到boost_x_xx_x文件夹中(其中x_xx_x是您正在使用的提升版本。)

  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

  4. 这将编译除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 ;
    

答案 1 :(得分:1)

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

  

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

您需要构建的那个是:

  
      
  • Boost.Filesystem的
  •   
  • Boost.GraphParallel
  •   
  • 了Boost.Iostreams
  •   
  • Boost.MPI
  •   
  • Boost.ProgramOptions
  •   
  • Boost.Python
  •   
  • Boost.Regex
  •   
  • Boost.Serialization
  •   
  • Boost.Signals
  •   
  • Boost.System
  •   
  • Boost.Thread
  •   
  • Boost.Wave
  •   

那你要建哪个?

答案 2 :(得分:0)

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

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。

<强> [编辑]

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