由于类似的问题:
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时,如何检查实际使用哪个编译器提升?
答案 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找到ar
和ranlib
。
在b2
行中调用此配置,如下所示:
b2 toolset=gcc-macports