【问题标题】:Building Boost for static linking (MinGW)为静态链接构建 Boost (MinGW)
【发布时间】:2010-10-04 10:10:16
【问题描述】:

我正在使用 bjam 为 MinGW 构建 Boost(我正在使用系统和文件系统):

bjam --toolset=gcc stage

它构建得很好,但我希望能够静态链接到它(我必须为最终产品提供一个文件)所以我尝试了:

bjam --link=static --toolset=gcc stage

但我得到相同的输出。有什么想法吗?

编辑连续第二个问题我在发布后不久就回答了:p 我想我会把这个留给其他人。

bjam --build-type=complete --toolset=gcc stage

肯定会构建动态和静态的。

【问题讨论】:

    标签: c++ boost build linker bjam


    【解决方案1】:

    我认为链接是一个属性,而不是 bjam 的一个选项。这意味着在它之前不应该有 -- 。

    这是我只构建静态库的命令行(虽然是 Visual c++):

    bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static
    

    将其映射到您的原始构建命令我会说它应该看起来像这样:

    bjam --toolset=gcc link=static stage
    

    或许:

    bjam stage --toolset=gcc link=static
    

    尝试运行

    bjam --help
    

    有关 bjam 的属性和选项的更多信息。

    【讨论】:

      【解决方案2】:

      请注意,使用较新的 boost(2011 年 2 月),您现在也需要构建 bjam。由于某种原因,当前可下载的 bjam 无法正常工作。

      首先:

      cd ...\boost_1_45_0\tools\build\v2\engine\src

      build.bat mingw

      您需要将 bjam 添加到 PATH(从控制面板,而不仅仅是在 cmd 提示符下)。那么

      cd ...\boost_1_45_0\

      bjam --build-type=complete --toolset=gcc stage

      我的设置是 Vista、Boost 1.45、MinGW 4.5,并且从 cmd.exe 而非 msys 构建。

      http://code-slim-jim.blogspot.com/2011/02/boost-in-vista-using-mingw-and-cmdexe.html

      【讨论】:

      • 谢谢!最近更新我的 boost 版本时,丢失的 bjam 让我感到惊讶。
      【解决方案3】:

      我自己没有在 MinGW 中构建这个,但我相信您的第一个构建将输出动态和静态库以及第二个仅输出静态库,因此如果您没有在构建之间清理构建目录,它可能看起来相同。

      当您写“我必须有一个文件...”时,您的意思是您需要一个包含所有 boost 库的库吗?如果是这样,我怀疑您可能必须自己将它们“ar”在一起。

      【讨论】:

      • 感谢您的回复,我所说的“我必须有一个文件...”的意思是我必须有我的可执行文件,并且不附带任何 DLL。
      【解决方案4】:

      我使用以下命令行来构建 boost 的静态链接和动态链接版本:

      bjam  "-sBUILD=debug release <runtime-link>static/dynamic <threading>multi" stage
      

      这是在 windows YMMV 上使用 Visual c++ 完成的。

      【讨论】:

        猜你喜欢
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 2012-08-27
        • 1970-01-01
        相关资源
        最近更新 更多