I think you are not linking pthread.
you need to link both ( -lpthread -lboost_thread ).
g++ -static -I(Path to boost include) -L(path to boost library) yourfile.cpp
-lboost_thread -lpthread -o yourOutputExe.out
(plz ignore any typo).
Thanks.
Kaz
On Tue, May 24, 2011 at 6:15 AM, Eric Lin
dear Kaz (and/or boost of c++ programers, especially on Linux/gnu-g++):
I tried to follow your suggestion -------- eric@eric-laptop:~/cppcookbook$ g++ -static example12-1.cpp -lboost_thread /tmp/cc0nDT5t.o: In function `boost::mutex::mutex()': example12-1.cpp:(.text._ZN5boost5mutexC1Ev[boost::mutex::mutex()]+0x17): undefined reference to `pthread_mutex_init' /tmp/cc0nDT5t.o: In function `boost::mutex::~mutex()': example12-1.cpp:(.text._ZN5boost5mutexD1Ev[boost::mutex::~mutex()]+0xd): undefined reference to `pthread_mutex_destroy' /tmp/cc0nDT5t.o: In function `boost::condition_variable::condition_variable()': example12-1.cpp:(.text._ZN5boost18condition_variableC1Ev[boost::condition_variable::condition_variable()]+0x17): undefined reference to `pthread_mutex_init' example12-1.cpp:(.text._ZN5boost18condition_variableC1Ev[boost::condition_variable::condition_variable()]+0x67): undefined reference to `pthread_cond_init' example12-1.cpp:(.text._ZN5boost18condition_variableC1Ev[boost::condition_variable::condition_variable()]+0x7b): undefined reference to `pthread_mutex_destroy' /tmp/cc0nDT5t.o: In function `boost::condition_variable::~condition_variable()': example12-1.cpp:(.text._ZN5boost18condition_variableD1Ev[boost::condition_variable::~condition_variable()]+0xd): undefined reference to `pthread_mutex_destroy' example12-1.cpp:(.text._ZN5boost18condition_variableD1Ev[boost::condition_variable::~condition_variable()]+0x43): undefined reference to `pthread_cond_destroy' /usr/local/lib/libboost_thread.a(thread.o): In function `boost::detail::(anonymous namespace)::create_current_thread_tls_key()': thread.cpp:(.text+0x196): undefined reference to `pthread_key_create' /usr/local/lib/libboost_thread.a(thread.o): In function `T.1155': thread.cpp:(.text+0x1d3): undefined reference to `pthread_mutex_lock' thread.cpp:(.text+0x205): undefined reference to `pthread_mutex_unlock' thread.cpp:(.text+0x240): undefined reference to `pthread_cond_wait' thread.cpp:(.text+0x27c): undefined reference to `pthread_mutex_unlock' thread.cpp:(.text+0x290): undefined reference to `pthread_key_create' thread.cpp:(.text+0x29c): undefined reference to `pthread_mutex_lock' thread.cpp:(.text+0x2cf): undefined reference to `pthread_cond_broadcast' thread.cpp:(.text+0x2ed): undefined reference to `pthread_mutex_unlock' /usr/local/lib/libboost_thread.a(thread.o): In function `boost::detail::get_current_thread_data()':
----------------------------------------------------------------------------------------- ----------------------------------This is just small portion of whole error of compile from my g++
------------------------------------------------------------------------------------------------- But if I follow Brian's suggestion, it work ------------ eric@eric-laptop:~/cppcookbook$ g++ example12-1.cpp -lboost_thread eric@eric-laptop:~/cppcookbook$ LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./a.out eric@eric-laptop:~/cppcookbook$
-------------------------- any comment on first example is welcome any simplify setup(like change link lib process(I guess, but not sure), chage env or path on my Linux Bash shell) is welcome
thanks a lot in advance, Eric/*love to attend any free meeting on topic of computer science in LA */
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
________________________________
Date: Mon, 23 May 2011 23:19:56 +0100 From: sfx810@googlemail.com To: boost-users@lists.boost.org Subject: Re: [Boost-users] simple thread program hard to compile/link with 1.46.1
You need to link it statically. By default gcc will link dynamically. use g++ -static flag, and you should be good to go
On Mon, May 23, 2011 at 10:24 PM, Eric Lin
wrote:
Dear boost programers(especially on linux/g++) : I copied that book's C++ Cookbook example12-1, and download boost lib's 1.46.1 on my Ubuntu Linux/ gnu-g++ system, I am not sure I am configure/install good enough or not. Anyway, I get a.out but when I run a.out ----------- eric@eric-laptop:~/cppcookbook$ ./a.out ./a.out: error while loading shared libraries: libboost_thread.so.1.46.1: cannot open shared object file: No such file or directory ------------- is this what you suppose to get?/* I email both first 2 authors: D. Ryan Stephens and Christopher Diggins, they not yet reply */ /* last 2 authors Jonathan Turkanis and Jeff Cogswell, I can not get their email address */ if not(I guess), where go wrong and how to fix it? --------- I am pretty novice on g++ and linux. Hope the following link help you debug.
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
I also tried root@eric-laptop:/# ldconfig -p | grep -i boost root@eric-laptop:/# -------- I read that link, it seem link will go through my /etc/ld.so.conf.d there are atlas.conf GL.conf i486-linux-gnu.conf libasound2.conf libc.conf Xen.conf
so I cat /etc/ld.so.conf.d/libc.conf
which show #libc default configuration /usr/local/lib
and in my /usr/local/lib I do have libboost_thread.a libboost_thread.so libboost_thread.so.1.46.1
so I really have no idea how to debug/fix plz help Eric, in Los Angeles ---------------------------------------- Date: Sun, 22 May 2011 18:43:01 -0700 From: watanabesj@gmail.com To: boost-users@lists.boost.org Subject: Re: [Boost-users] simple thread program hard to compile/link with 1.46.1
AMDG
On 05/22/2011 05:09 PM, Eric Lin wrote:
Dear Steven or any boost programers/users:
I tried ./bootstrap.sh ./bjam ./bjam install
in my /boost_1_46_1/ directory which is auto extracted by my ubuntu
linux after download
but I got the following build/compile errors:(these are just small
portion of all errors)(c++ compiler is g++ of gnu on intel)
------------------------------ cp
"bin.v2/libs/math/build/gcc-4.4.3/release/link-static/threading-multi/libboost_math_c99f.a"
"/usr/local/lib/libboost_math_c99f.a"
...failed common.copy /usr/local/lib/libboost_math_c99f.a... common.copy /usr/local/lib/libboost_math_c99l.a cp: cannot create regular file `/usr/local/lib/libboost_math_c99l.a':
Permission denied
sudo bjam install? Alternately, just use -L/path/to/boost_1_46_1/stage/lib.
In Christ, Steven Watanabe
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users