Search code examples
c++ubuntuboost-thread

boost::thread undefined reference


I just installed the boost libraries and I am trying to use multi - threading. I copied this example exactly from the boost library example. I am getting the error:

undefined reference boost::thread::join()

Here is the code,

#include <boost/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>

struct thread_alarm
{
    thread_alarm(int secs) : m_secs(secs) { }
    void operator()()
    {
        boost::xtime xt;
        boost::xtime_get(&xt, boost::TIME_UTC);
        xt.sec += m_secs;

        boost::thread::sleep(xt);

        std::cout << "alarm sounded..." << std::endl;
    }

    int m_secs;
};

int main(int argc, char* argv[])
{
    int secs = 5;
    std::cout << "setting alarm for 5 seconds..." << std::endl;
    thread_alarm alarm(secs);
    boost::thread thrd(alarm);
    thrd.join();
}

Solution

  • which compiler?

    try this if it is gcc

    $ g++ -o ./app.out ./source.cpp -lboost_thread
    

    if you are running on windows, perhaps that you have to make sure that the pthread you have installed, and also you have to tell the compiler where and how to link them together, your application and 3rd party lib such as boost_thread.

    hope this is useful for you