编译Boost时如何更改/检查b2使用的编译器?

时间:2013-03-28 16:19:13

标签: c++ macos boost

由于类似的问题:

Mac OS X and static boost libs -> std::string fail

即在调用boost文件系统目录迭代器构造函数时,我得到一个运行时错误“释放的指针没有被分配***在malloc_error_break中设置一个断点来调试”。我的印象是,如果使用不同的编译器编译boost和程序,就会发生这种情况。

所以我尝试使用我用于程序的相同编译器重新编译boost库,即macports gcc(g ++ - mp-4.8)。基于一些在线说明,我的理解是我编辑tools / build / v2 / user-config.jam来指定编译器,所以它现在说:

# Configure gcc (default version).
# using gcc ;

# Configure specific gcc version, giving alternative name to use.
# using gcc : 4.8 : g++-mp-4.8 ;

我将user-config.jam复制到我的主目录,重新运行bootstrap.sh并重新运行b2。但是我仍然得到我的错误(“指针被释放未分配***在malloc_error_break中设置断点以进行调试”)。这是指定编译器用于编译的正确过程吗?当我运行b2时,如何检查实际使用哪个编译器提升?

1 个答案:

答案 0 :(得分:5)

user-config.jam留在\boost\tools\build\v2。 请注意,从#开始的行是注释。 您的配置应如下所示(假设g ++位于full/Path/且名为g++-mp4.8):

  using gcc : macports :
         full/Path/g++-mp4.8 :
  <compileflags>--sysroot=full/path/to/sysroot
  ;

您可能还需要设置<archiver><ranlib>选项,以允许Boost.Build找到arranlib

b2行中调用此配置,如下所示:

b2 toolset=gcc-macports