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@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