Как собрать boost с помощью отладки libstdc++ в Linux (флаг GLIBCXX_DEBUG)

Я пытаюсь построить boost с помощью следующих команд:

#!/bin/bash

if [ -z "$BUILD_PATH" ]
then
    echo "Variable BUILD_PATH isn't specified!"
    exit
fi

BOOST_BUILD_PATH="$BUILD_PATH/boost"
mkdir "$BOOST_BUILD_PATH"

NBITS=64
STAGEDIR="$BOOST_BUILD_PATH"
PLATF_AUX="architecture=x86 address-model=64"
NUMBER_OF_PROCESSORS=$(nproc)
SPEZ_DEFS="-D_GLIBCXX_DEBUG"



./bootstrap.sh
./b2 -j$NUMBER_OF_PROCESSORS --toolset=gcc cxxflags=-std=c++14,-D_GLIBCXX_DEBUG cflags=-D_GLIBCXX_DEBUG variant=release,debug link=shared runtime-link=shared threading=multi \
            --with-locale -s ICU_PATH=$BUILD_PATH/icu \
            --with-system --with-atomic --with-timer --with-thread --with-chrono --with-program_options --with-filesystem --with-date_time --with-regex --with-iostreams \
            -s NO_ZLIB=0 -s ZLIB_INCLUDE=../BUILD/zlib/include -s ZLIB_LIBPATH=$BUILD_PATH/zlib/lib -s NO_BZIP2=1 \
            --stagedir=$STAGEDIR debug-symbols=on $PLATF_AUX --layout=tagged stage

Я не знаю, как тщательно проверить, что boost скомпилирован с правильными флагами. Очевидно, что это не так, так как я получаю такие ошибки при сборке библиотек, которые зависят от повышения:

In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)':
/path/to/project/../../shared/boost/boost/program_options/detail/parsers.hpp:44: undefined reference to `boost::program_options::detail::cmdline::cmdline(std::__debug::vector<std::string, std::allocator<std::string> > const&)'

Но здесь и здесь упоминается, что boost можно скомпилировать с помощью debug libstdc++. Но как?


person sdd    schedule 17.07.2017    source источник
comment
Почему вы компилируете с -D_GLIBCXX_DEBUG?   -  person Florian Weimer    schedule 17.07.2017
comment
Он включает проверки отладки утверждений в stdlibc++, такие как проверки диапазона для вектора.   -  person sdd    schedule 17.07.2017