Boost logo

Boost :

Subject: [boost] [boost.thread] Trouble building with MinGw 4.7.0
From: Philip Bennefall (philip_at_[hidden])
Date: 2013-08-01 07:15:47


Hi all,

Up until now I have been developing exclusively with VC++ 2010, and there my
project builds just fine and without warnings. However, I am also planning
to target Unix so I figured that a first step would be to make sure my
project builds with MinGw. I set up my path environment variable to include
the location of the MinGw 4.7.0 bin directory, and I built Boost with the
following parameters:

b2 variant=release link=static runtime-link=static threading=multi
toolset=gcc

Everything seems to be working fine (stage/lib contains all the .a files
that I would expect). However, when I attempt to build my program I get tons
of errors like the following:

myprog_main.o:myprog_main.cpp:(.text+0x28ef): undefined reference to
`__imp___ZN5boost6thread9interruptEv'
myprog_main.o:myprog_main.cpp:(.text+0x294f): undefined reference to
`__imp___ZNK5boost6thread6get_idEv'
myprog_main.o:myprog_main.cpp:(.text+0x295d): undefined reference to
`__imp___ZN5boost11this_thread6get_idEv'
myprog_main.o:myprog_main.cpp:(.text+0x2973): undefined reference to
`__imp___ZN5boost6thread13join_noexceptEv'
myprog_main.o:myprog_main.cpp:(.text+0x2981): undefined reference to
`__imp___ZN5boost6thread6detachEv'
myprog_main.o:myprog_main.cpp:(.text+0x4600): undefined reference to
`__imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'
myprog_main.o:myprog_main.cpp:(.text+0x49c2): undefined reference to
`__imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'
myprog_main.o:myprog_main.cpp:(.text+0x667e): undefined reference to
`__imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'
myprog_main.o:myprog_main.cpp:(.text+0x90a9): undefined reference to
`__imp___ZN5boost6thread21start_thread_noexceptEv'
myprog_main.o:myprog_main.cpp:(.text+0x9134): undefined reference to
`__imp___ZN5boost6thread21start_thread_noexceptEv'
myprog_main.o:myprog_main.cpp:(.text+0x917e): undefined reference to
`__imp___ZN5boost6thread9interruptEv'

myprog_main.o:myprog_main.cpp:(.text$_ZN5boost6detail11thread_dataINS_3_bi6bind_tIvPFvPN5myprog5themeEENS2_5list1INS2_5valueIS6_EEEEEEED1Ev[boost::detail::thread_data<boost::_bi::bind_t<void,
void (*)(myprog::theme*),
boost::_bi::list1<boost::_bi::value<myprog::theme*> > >
>::~thread_data()]+0x7): undefined reference to
`__imp___ZN5boost6detail16thread_data_baseD2Ev'
myprog_main.o:myprog_main.cpp:(.text$_ZN5boost6detail11thread_dataINS_3_bi6bind_tIvPFvPN5myprog5themeEENS2_5list1INS2_5valueIS6_EEEEEEED0Ev[boost::detail::thread_data<boost::_bi::bind_t<void,
void (*)(myprog::theme*),
boost::_bi::list1<boost::_bi::value<myprog::theme*> > >
>::~thread_data()]+0xe): undefined reference to
`__imp___ZN5boost6detail16thread_data_baseD2Ev'
myprog_main.o:myprog_main.cpp:(.text$_ZN5boost6threadD1Ev[boost::thread::~thread()]+0x9):
undefined reference to `__imp___ZN5boost6thread6detachEv'

Etc...

I tried to specify -DBOOST_NO_LIB and add all the libraries manually, but no
luck. Then I thought that maybe there's a problem with the fact that there
are spaces in some of my directory names, so I copied the relevant .a files
to the same directory as the program itself but still with no success. At
this point, I'm swamped. I have managed to compile MinGw programs in the
past that used Boost Thread, so I have no idea why it is not working with
this version of Boost. Any suggestions would be highly appreciated.

Kind regards,

Philip Bennefall


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