Boost logo

Boost :

From: Jens Kallup (kallup.jens_at_[hidden])
Date: 2021-10-05 07:16:31


Hello Community,

I running Windows 10 Pro. MSYS2 - MinGW64-bit with gcc/g++ 10.2.0.
I have download the 1_77 Version of Boost, compile it with b2 in the
msys2 shell terminal.
I could not replace cxx11 to cxx17.
All options to build.bat, and b2.exe/sh to switch to cxx17 have not
be worked.
I downwrite the simple "Boost.program_options" example.
I could compile it without any errors or warnings.
But I ran into trouble at link stage.
I have tried libs for x32/64, single/multi thread, debug/release,
static/dynamic.
All ends up with the same error of undefined reference explained below.
Here comes the known source code to the problem:
---%<---
# include <boost/program_options.hpp>
# include "common.h"

namespace po = boost::program_options;

int
main(int argc, char *argv[])
{
 Â Â Â  try {
 Â Â Â      po::options_description desc("Allowed Options");
 Â Â Â      desc.add_options()
 Â Â Â          ("help", "shows the help page")
 Â Â Â          ("compression", po::value<int>(), "set compression level")
 Â Â Â      ;
 Â Â Â      po::variables_map vm;
 Â Â Â      po::store(po::parse_command_line(argc, argv, desc), vm);
 Â Â Â      po::notify(vm);

 Â Â Â      if (vm.count("help")) {
 Â Â Â          std::cout << desc << std::endl;
 Â Â Â          return SUCCESS;
 Â Â Â      }

 Â Â Â      if (vm.count("compression")) {
 Â Â Â          std::cout << "Compression level was set to "
 Â Â Â          << vm["compression"].as<int>() << "." << std::endl;
 Â Â Â      } else {
 Â Â Â          std::cout << "Compression level was not set." << std::endl;
 Â Â Â      }
 Â Â Â  } catch(...) {
 Â Â Â Â Â Â Â  std::cerr << "caugth a error.\n";
 Â Â Â Â Â Â Â  return FAILURE;
 Â Â Â  }
 Â Â Â  return SUCCESS;
}
--->%---

Here is a list of the files that are generated during the build time:

devlab1_at_rk1700 MINGW64 /e/Projekte/news
$ dir ../boost_1_77_0/stage/lib/
cmake
libboost_atomic-mgw10-mt-d-x32-1_77.a
libboost_atomic-mgw10-mt-d-x64-1_77.a
libboost_atomic-mgw10-mt-s-x64-1_77.a
libboost_atomic-mgw10-mt-x32-1_77.a
libboost_atomic-mgw10-mt-x64-1_77.a
libboost_chrono-mgw10-mt-d-x32-1_77.a
libboost_chrono-mgw10-mt-d-x64-1_77.a
libboost_chrono-mgw10-mt-s-x64-1_77.a
libboost_chrono-mgw10-mt-x32-1_77.a
libboost_chrono-mgw10-mt-x64-1_77.a
libboost_container-mgw10-mt-d-x32-1_77.a
libboost_container-mgw10-mt-d-x64-1_77.a
libboost_container-mgw10-mt-s-x64-1_77.a
libboost_container-mgw10-mt-x32-1_77.a
libboost_container-mgw10-mt-x64-1_77.a
libboost_context-mgw10-mt-d-x32-1_77.a
libboost_context-mgw10-mt-d-x64-1_77.a
libboost_context-mgw10-mt-s-x64-1_77.a
libboost_context-mgw10-mt-x32-1_77.a
libboost_context-mgw10-mt-x64-1_77.a
libboost_contract-mgw10-mt-d-x32-1_77.a
libboost_contract-mgw10-mt-d-x64-1_77.a
libboost_contract-mgw10-mt-s-x64-1_77.a
libboost_contract-mgw10-mt-x32-1_77.a
libboost_contract-mgw10-mt-x64-1_77.a
libboost_coroutine-mgw10-mt-d-x32-1_77.a
libboost_coroutine-mgw10-mt-d-x64-1_77.a
libboost_coroutine-mgw10-mt-s-x64-1_77.a
libboost_coroutine-mgw10-mt-x32-1_77.a
libboost_coroutine-mgw10-mt-x64-1_77.a
libboost_date_time-mgw10-mt-d-x32-1_77.a
libboost_date_time-mgw10-mt-d-x64-1_77.a
libboost_date_time-mgw10-mt-s-x64-1_77.a
libboost_date_time-mgw10-mt-x32-1_77.a
libboost_date_time-mgw10-mt-x64-1_77.a
libboost_exception-mgw10-mt-d-x32-1_77.a
libboost_exception-mgw10-mt-d-x64-1_77.a
libboost_exception-mgw10-mt-s-x64-1_77.a
libboost_exception-mgw10-mt-x32-1_77.a
libboost_exception-mgw10-mt-x64-1_77.a
libboost_fiber-mgw10-mt-d-x64-1_77.a
libboost_fiber-mgw10-mt-s-x64-1_77.a
libboost_fiber-mgw10-mt-x64-1_77.a
libboost_filesystem-mgw10-mt-d-x32-1_77.a
libboost_filesystem-mgw10-mt-d-x64-1_77.a
libboost_filesystem-mgw10-mt-s-x64-1_77.a
libboost_filesystem-mgw10-mt-x32-1_77.a
libboost_filesystem-mgw10-mt-x64-1_77.a
libboost_graph-mgw10-mt-d-x32-1_77.a
libboost_graph-mgw10-mt-d-x64-1_77.a
libboost_graph-mgw10-mt-s-x64-1_77.a
libboost_graph-mgw10-mt-x32-1_77.a
libboost_graph-mgw10-mt-x64-1_77.a
libboost_iostreams-mgw10-mt-d-x32-1_77.a
libboost_iostreams-mgw10-mt-d-x64-1_77.a
libboost_iostreams-mgw10-mt-s-x64-1_77.a
libboost_iostreams-mgw10-mt-x32-1_77.a
libboost_iostreams-mgw10-mt-x64-1_77.a
libboost_json-mgw10-mt-d-x32-1_77.a
libboost_json-mgw10-mt-d-x64-1_77.a
libboost_json-mgw10-mt-s-x64-1_77.a
libboost_json-mgw10-mt-x32-1_77.a
libboost_json-mgw10-mt-x64-1_77.a
libboost_locale-mgw10-mt-d-x32-1_77.a
libboost_locale-mgw10-mt-d-x64-1_77.a
libboost_locale-mgw10-mt-s-x64-1_77.a
libboost_locale-mgw10-mt-x32-1_77.a
libboost_locale-mgw10-mt-x64-1_77.a
libboost_log-mgw10-mt-d-x32-1_77.a
libboost_log-mgw10-mt-d-x64-1_77.a
libboost_log-mgw10-mt-s-x64-1_77.a
libboost_log-mgw10-mt-x32-1_77.a
libboost_log-mgw10-mt-x64-1_77.a
libboost_log_setup-mgw10-mt-d-x32-1_77.a
libboost_log_setup-mgw10-mt-d-x64-1_77.a
libboost_log_setup-mgw10-mt-s-x64-1_77.a
libboost_log_setup-mgw10-mt-x32-1_77.a
libboost_log_setup-mgw10-mt-x64-1_77.a
libboost_math_c99-mgw10-mt-d-x64-1_77.a
libboost_math_c99-mgw10-mt-s-x64-1_77.a
libboost_math_c99-mgw10-mt-x64-1_77.a
libboost_math_c99f-mgw10-mt-d-x64-1_77.a
libboost_math_c99f-mgw10-mt-s-x64-1_77.a
libboost_math_c99f-mgw10-mt-x64-1_77.a
libboost_math_c99l-mgw10-mt-d-x64-1_77.a
libboost_math_c99l-mgw10-mt-s-x64-1_77.a
libboost_math_c99l-mgw10-mt-x64-1_77.a
libboost_math_tr1-mgw10-mt-d-x64-1_77.a
libboost_math_tr1-mgw10-mt-s-x64-1_77.a
libboost_math_tr1-mgw10-mt-x64-1_77.a
libboost_math_tr1f-mgw10-mt-d-x64-1_77.a
libboost_math_tr1f-mgw10-mt-s-x64-1_77.a
libboost_math_tr1f-mgw10-mt-x64-1_77.a
libboost_math_tr1l-mgw10-mt-d-x64-1_77.a
libboost_math_tr1l-mgw10-mt-s-x64-1_77.a
libboost_math_tr1l-mgw10-mt-x64-1_77.a
libboost_nowide-mgw10-mt-d-x32-1_77.a
libboost_nowide-mgw10-mt-d-x64-1_77.a
libboost_nowide-mgw10-mt-s-x64-1_77.a
libboost_nowide-mgw10-mt-x32-1_77.a
libboost_nowide-mgw10-mt-x64-1_77.a
libboost_prg_exec_monitor-mgw10-mt-d-x32-1_77.a
libboost_prg_exec_monitor-mgw10-mt-d-x64-1_77.a
libboost_prg_exec_monitor-mgw10-mt-s-x64-1_77.a
libboost_prg_exec_monitor-mgw10-mt-x32-1_77.a
libboost_prg_exec_monitor-mgw10-mt-x64-1_77.a
libboost_program_options-mgw10-mt-d-x32-1_77.a
libboost_program_options-mgw10-mt-d-x64-1_77.a
libboost_program_options-mgw10-mt-s-x64-1_77.a
libboost_program_options-mgw10-mt-x32-1_77.a
libboost_program_options-mgw10-mt-x64-1_77.a
libboost_python39-mgw10-mt-d-x32-1_77.a
libboost_python39-mgw10-mt-d-x64-1_77.a
libboost_python39-mgw10-mt-x32-1_77.a
libboost_python39-mgw10-mt-x64-1_77.a
libboost_random-mgw10-mt-d-x32-1_77.a
libboost_random-mgw10-mt-d-x64-1_77.a
libboost_random-mgw10-mt-s-x64-1_77.a
libboost_random-mgw10-mt-x32-1_77.a
libboost_random-mgw10-mt-x64-1_77.a
libboost_regex-mgw10-mt-d-x32-1_77.a
libboost_regex-mgw10-mt-d-x64-1_77.a
libboost_regex-mgw10-mt-s-x64-1_77.a
libboost_regex-mgw10-mt-x32-1_77.a
libboost_regex-mgw10-mt-x64-1_77.a
libboost_serialization-mgw10-mt-d-x32-1_77.a
libboost_serialization-mgw10-mt-d-x64-1_77.a
libboost_serialization-mgw10-mt-s-x64-1_77.a
libboost_serialization-mgw10-mt-x32-1_77.a
libboost_serialization-mgw10-mt-x64-1_77.a
libboost_stacktrace_basic-mgw10-mt-d-x32-1_77.a
libboost_stacktrace_basic-mgw10-mt-x32-1_77.a
libboost_stacktrace_noop-mgw10-mt-d-x32-1_77.a
libboost_stacktrace_noop-mgw10-mt-d-x64-1_77.a
libboost_stacktrace_noop-mgw10-mt-s-x64-1_77.a
libboost_stacktrace_noop-mgw10-mt-x32-1_77.a
libboost_stacktrace_noop-mgw10-mt-x64-1_77.a
libboost_stacktrace_windbg-mgw10-mt-d-x64-1_77.a
libboost_stacktrace_windbg-mgw10-mt-s-x64-1_77.a
libboost_stacktrace_windbg-mgw10-mt-x64-1_77.a
libboost_stacktrace_windbg_cached-mgw10-mt-d-x64-1_77.a
libboost_stacktrace_windbg_cached-mgw10-mt-s-x64-1_77.a
libboost_stacktrace_windbg_cached-mgw10-mt-x64-1_77.a
libboost_system-mgw10-mt-d-x32-1_77.a
libboost_system-mgw10-mt-d-x64-1_77.a
libboost_system-mgw10-mt-s-x64-1_77.a
libboost_system-mgw10-mt-x32-1_77.a
libboost_system-mgw10-mt-x64-1_77.a
libboost_test_exec_monitor-mgw10-mt-d-x32-1_77.a
libboost_test_exec_monitor-mgw10-mt-d-x64-1_77.a
libboost_test_exec_monitor-mgw10-mt-s-x64-1_77.a
libboost_test_exec_monitor-mgw10-mt-x32-1_77.a
libboost_test_exec_monitor-mgw10-mt-x64-1_77.a
libboost_thread-mgw10-mt-d-x32-1_77.a
libboost_thread-mgw10-mt-d-x64-1_77.a
libboost_thread-mgw10-mt-s-x64-1_77.a
libboost_thread-mgw10-mt-x32-1_77.a
libboost_thread-mgw10-mt-x64-1_77.a
libboost_timer-mgw10-mt-d-x32-1_77.a
libboost_timer-mgw10-mt-d-x64-1_77.a
libboost_timer-mgw10-mt-s-x64-1_77.a
libboost_timer-mgw10-mt-x32-1_77.a
libboost_timer-mgw10-mt-x64-1_77.a
libboost_type_erasure-mgw10-mt-d-x32-1_77.a
libboost_type_erasure-mgw10-mt-d-x64-1_77.a
libboost_type_erasure-mgw10-mt-s-x64-1_77.a
libboost_type_erasure-mgw10-mt-x32-1_77.a
libboost_type_erasure-mgw10-mt-x64-1_77.a
libboost_unit_test_framework-mgw10-mt-d-x32-1_77.a
libboost_unit_test_framework-mgw10-mt-d-x64-1_77.a
libboost_unit_test_framework-mgw10-mt-s-x64-1_77.a
libboost_unit_test_framework-mgw10-mt-x32-1_77.a
libboost_unit_test_framework-mgw10-mt-x64-1_77.a
libboost_wave-mgw10-mt-d-x32-1_77.a
libboost_wave-mgw10-mt-d-x64-1_77.a
libboost_wave-mgw10-mt-s-x64-1_77.a
libboost_wave-mgw10-mt-x32-1_77.a
libboost_wave-mgw10-mt-x64-1_77.a
libboost_wserialization-mgw10-mt-d-x32-1_77.a
libboost_wserialization-mgw10-mt-d-x64-1_77.a
libboost_wserialization-mgw10-mt-s-x64-1_77.a
libboost_wserialization-mgw10-mt-x32-1_77.a
libboost_wserialization-mgw10-mt-x64-1_77.a

Here comes the command line for compile/link the application

$ /mingw64/bin/x86_64-w64-mingw32-g++ -o winperm.exe ./tmp/main.o
./tmp/network.o
./tmp/threading.o ./tmp/translator.o ./tmp/tv_tui.o ./tmp/permutation.o 
-fopenmp
-MD -I/E/Projekte/boost_1_77_0/stage/lib -L../boost_1_77_0/stage/lib
-L../tvision/build -L/mingw64/lib -L/mingw64/x86_64-w64-mingw32/lib
-ltvision -lkernel32 -luser32 -lwinmm -lws2_32 -lintl -lpthread
-lboost_iostreams-mgw10-mt-x64-1_77
-lboost_program_options-mgw10-mt-x64-1_77

And here comes the error output from the linker LD:

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9

function1ISt4pairISsSsERKSsEE[_ZN5boost15program_options25basic_command_line_parserIcE12

extra_parserENS_9function1ISt4pairISsSsERKSsEE]+0x41): undefined
reference to
`boost::program_options::detail::cmdline::set_additional_parser(boost::function1

<std::pair<std::string, std::string>, std::string const&>)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_Sa

IS5_EE[_ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_Sa

IS5_EE]+0x48): undefined reference to `boost::program_options::to_internal
(std::string const&)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-

mingw32/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc
[_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc]+0xaf):
undefined reference to
`boost::program_options::detail::cmdline::cmdline(std::vector<std::string,
std::allocator<std::string> > const&)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:(.text.startup.main+0xb8): undefined
reference to
`boost::program_options::options_description::options_description(std::string
const&,
unsigned int, unsigned int)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:(.text.startup.main+0x281): undefined
reference to
`boost::program_options::abstract_variables_map::operator[](std::string
const&) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11

char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10validators17

get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb]+0xa1):

undefined reference to
`boost::program_options::validation_error::get_template(boost::program_options::

validation_error::kind_t)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11

char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10validators17

get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb]+0xba):

undefined reference to
`boost::program_options::error_with_option_name::error_with_option_name(std::string

const&, std::string const&, std::string const&, int)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11

char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10

validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS

7_EEb]+0x199): undefined reference to
`boost::program_options::validation_error::get_template(boost::program_options::

validation_error::kind_t)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11

char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[_ZN5boost15program_options10validators17

get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb]+0x1b2):

undefined reference to
`boost::program_options::error_with_option_name::error_with_option_name(std::string

const&, std::string const&, std::string const&, int)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.text$_ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorISbIT0_St11

char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[_ZN5boost15program_options8validateIicEEvRNS_3any

ERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l]+0x5db):
undefined reference
to
`boost::program_options::invalid_option_value::invalid_option_value(std::string
const&)'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$_ZTVN5boost10wrapexceptINS_15program_options20invalid_option_valueEEE[_ZTVN5

boost10wrapexceptINS_15program_options20invalid_option_valueEEE]+0x60):
undefined
reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::string

const&) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$_ZTVN5boost10wrapexceptINS_15program_options16validation_errorEEE[_ZTVN5boost10

wrapexceptINS_15program_options16validation_errorEEE]+0x60): undefined
reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::string

const&) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$_ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16

validation_errorE]+0x30): undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::string

const&) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$_ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15
program_options20invalid_option_valueE]+0x30): undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::string

const&) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$_ZTVN5boost15program_options11typed_valueIicEE[_ZTVN5boost15
program_options11typed_valueIicEE]+0x38): undefined reference to
`boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,

std::vector<std::string, std::allocator<std::string> > const&, bool) const'

E:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32

/bin/ld.exe: ./tmp/main.o:main.cc:
(.rdata$.refptr._ZN5boost15program_options3argE[.refptr._ZN5boost15program_options3

argE]+0x0): undefined reference to `boost::program_options::arg'
collect2.exe: error: ld returned 1 exit status

Did I miss something ?
The question is now, how can I use boost under msys2 with mingw64 ?

Thanks for helping hands, paule32


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk