It's been a while since I installed MinGW-w64 so I can't remember the
specific installation options selected (thread models, etc), or if that
is relevant.
I've been able to compile a few relatively simple C and C++ programs.
Using the MSYS2/MINGW64 shell for program compilation. Installed boost
for using pacman under the MSYS2 shell (not MINGW32 or MINGW64).
pacman -Ss | grep boost
mingw32/mingw-w64-i686-boost 1.63.0-1 [installed]
mingw64/mingw-w64-x86_64-boost 1.63.0-1 [installed]
I'm able to compile and run a "simple" boost example (simple.cpp.txt [1]
attached) without errors using:
g++ simple.cpp -o simple
However, when trying to compile the program_options "first" example
(po_first.cpp.txt attached), I get a lot of errors (po_first.log.txt).
g++ po_first.cpp -o po_first
I don't know if I set up MinGW-w64 correctly, or if I need to specify
includes or libraries to link to on g++ command line. Any tips appreciated.
[1] Note: Attachments given .txt extension in hopes that mailing list
software doesn't eat the file. Rename locally as needed.
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
// Copyright Vladimir Prus 2002-2004.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
/* The simplest usage of the library.
*/
#include <boost/program_options.hpp>
namespace po = boost::program_options;
#include <iostream>
#include <iterator>
using namespace std;
int main(int ac, char* av[])
{
try {
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("compression", po::value<double>(), "set compression
level")
;
po::variables_map vm;
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
if (vm.count("help")) {
cout << desc << "\n";
return 0;
}
if (vm.count("compression")) {
cout << "Compression level was set to "
<< vm["compression"].as<double>() << ".\n";
} else {
cout << "Compression level was not set.\n";
}
}
catch(exception& e) {
cerr << "error: " << e.what() << "\n";
return 1;
}
catch(...) {
cerr << "Exception of unknown type!\n";
}
return 0;
}
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x86): undefined reference to
`boost::program_options::options_description::options_description(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned
int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xb8): undefined reference to
`boost::program_options::options_description::add_options()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xdc): undefined reference to
`boost::program_options::options_description_easy_init::operator()(char const*,
char const*)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0xf5): undefined reference to
`boost::program_options::options_description_easy_init::operator()(char const*,
boost::program_options::value_semantic const*, char const*)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x101): undefined reference to
`boost::program_options::variables_map::variables_map()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x163): undefined reference to
`boost::program_options::store(boost::program_options::basic_parsed_options<char>
const&, boost::program_options::variables_map&, bool)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x18d): undefined reference to
`boost::program_options::notify(boost::program_options::variables_map&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text+0x210): undefined reference to
`boost::program_options::operator<<(std::ostream&,
boost::program_options::options_description const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x2f):
undefined reference to
`boost::program_options::validation_error::get_template[abi:cxx11](boost::program_options::validation_error::kind_t)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x4e):
undefined reference to
`boost::program_options::error_with_option_name::error_with_option_name(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZNK5boost15program_options13variables_mapixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNK5boost15program_options13variables_mapixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x1c):
undefined reference to
`boost::program_options::abstract_variables_map::operator[](std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc]+0x72):
undefined reference to
`boost::program_options::detail::cmdline::cmdline(std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE7optionsERKNS0_19options_descriptionE[_ZN5boost15program_options25basic_command_line_parserIcE7optionsERKNS0_19options_descriptionE]+0x1c):
undefined reference to
`boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description
const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE5styleEi[_ZN5boost15program_options25basic_command_line_parserIcE5styleEi]+0x1a):
undefined reference to `boost::program_options::detail::cmdline::style(int)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE[_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE]+0x32):
undefined reference to
`boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
>, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&>)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x1e):
undefined reference to
`boost::program_options::detail::cmdline::get_canonical_option_prefix()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options25basic_command_line_parserIcE3runEv[_ZN5boost15program_options25basic_command_line_parserIcE3runEv]+0x47):
undefined reference to `boost::program_options::detail::cmdline::run()'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE[_ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE]+0x59):
undefined reference to
`boost::program_options::to_internal(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options11typed_valueIdcEE[_ZTVN5boost15program_options11typed_valueIdcEE]+0x40):
undefined reference to
`boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&, bool) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x20):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x30):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x20):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x30):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x35):
undefined reference to
`boost::program_options::validators::check_first_occurrence(boost::any const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.text$_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0xe0):
undefined reference to
`boost::program_options::invalid_option_value::invalid_option_value(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x28):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x38):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x20):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x30):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x28):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x38):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x20):
undefined reference to `boost::program_options::error_with_option_name::what()
const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x30):
undefined reference to
`boost::program_options::error_with_option_name::substitute_placeholders(std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) const'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZN5boost15program_options3argB5cxx11E[.refptr._ZN5boost15program_options3argB5cxx11E]+0x0):
undefined reference to `boost::program_options::arg[abi:cxx11]'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options13variables_mapE[.refptr._ZTVN5boost15program_options13variables_mapE]+0x0):
undefined reference to `vtable for boost::program_options::variables_map'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZN5boost15program_options19options_description21m_default_line_lengthE[.refptr._ZN5boost15program_options19options_description21m_default_line_lengthE]+0x0):
undefined reference to
`boost::program_options::options_description::m_default_line_length'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options29value_semantic_codecvt_helperIcEE[.refptr._ZTVN5boost15program_options29value_semantic_codecvt_helperIcEE]+0x0):
undefined reference to `vtable for
boost::program_options::value_semantic_codecvt_helper<char>'
E:\msys64\tmp\ccGFMUW8.o:first.cpp:(.rdata$.refptr._ZTVN5boost15program_options22error_with_option_nameE[.refptr._ZTVN5boost15program_options22error_with_option_nameE]+0x0):
undefined reference to `vtable for
boost::program_options::error_with_option_name'
collect2.exe: error: ld returned 1 exit status
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public