Re: [Boost-users] boost compilation error
Bijay Panda wrote:
Hi, when i try like this i got error like bellow bijay@cmp1:~/boost$ g++ -o second boostThread.cpp -lboost_filesystem-gcc42-1_34_1 /usr/bin/ld: cannot find -lboost_filesystem-gcc42-1_34_1 collect2: ld returned 1 exit status
It can't find libboost_filesystem-gcc42-1_34_1.so You may create it: ln -s /usr/lib/libboost_filesystem-gcc42-1_34_1.so.1.34.1 /usr/lib/libboost_filesystem-gcc42-1_34_1.so
so i tried like this bijay@cmp1: g++ -o second boostThread.cpp -L/boost_filesystem-gcc42-1_34_1 Read about -I and -L options in gcc manual page :)
then it's showing error like bellow
Your program doesn't depend on boost filesystem library. It depends on boost thread library.
/tmp/cclxXala.o: In function `main': boostThread.cpp:(.text+0xeb): undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)' boostThread.cpp:(.text+0x101): undefined reference to `boost::thread::join()' boostThread.cpp:(.text+0x132): undefined reference to `boost::thread::~thread()' boostThread.cpp:(.text+0x148): undefined reference to `boost::thread::~thread()' collect2: ld returned 1 exit status
Your program is compiled without any problems as follows: krivenok@develop2 15:31:21 /tmp $ cat example.cpp #include <boost/thread/thread.hpp> #include <exception> #include <stdlib.h> #include <iostream> using namespace std; class callable { public: void run() { try { cout << "Throwing" <<std:: endl; throw string("error"); } catch(string &e) { cout << "Error: " << e << endl; } } void operator()() { this->run(); } }; int main() { callable c; cout<<"inside main"<<endl; boost::thread thd(boost::ref(c)); thd.join(); return 0; } krivenok@develop2 15:31:28 /tmp $ g++ example.cpp -lboost_thread-gcc43-mt-1_37 -L/usr/local/dev/boost-1.37.0/lib -I/usr/local/dev/boost-1.37.0/include krivenok@develop2 15:31:44 /tmp $ ./a.out inside main Throwing Error: error krivenok@develop2 15:31:47 /tmp $ ldd ./a.out linux-gate.so.1 => (0xb7fa0000) libboost_thread-gcc43-mt-1_37.so.1.37.0 => /usr/local/dev/boost-1.37.0/lib/libboost_thread-gcc43-mt-1_37.so.1.37.0 (0xb7f90000) libstdc++.so.6 => /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libstdc++.so.6 (0xb7e90000) libm.so.6 => /lib/libm.so.6 (0xb7e6a000) libgcc_s.so.1 => /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libgcc_s.so.1 (0xb7e5e000) libc.so.6 => /lib/libc.so.6 (0xb7d2e000) librt.so.1 => /lib/librt.so.1 (0xb7d24000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7d0d000) /lib/ld-linux.so.2 (0xb7fa1000) krivenok@develop2 15:31:55 /tmp $
////////////////////Here is my program/////////// #include <exception> #include <boost/thread/thread.hpp> #include <stdlib.h> #include <iostream> using namespace std;
class callable { public: void run() { try { cout << "Throwing" <<std:: endl; throw string("error"); } catch(string &e) { cout << "Error: " << e << endl; } }
void operator()() { this->run(); } };
int main() { callable c; cout<<"inside main"<<endl; boost::thread thd(boost::ref(c)); thd.join(); return 0; }
Plz help me out.
On Fri, Jan 16, 2009 at 4:41 PM, Dmitry V. Krivenok <krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru>> wrote:
Bijay Panda wrote:
Hi, when i try this locate libboost_filesystem i get path like bellow
bijay@cmp1:~/boost$ locate libboost_filesystem /usr/lib/libboost_filesystem-gcc41-mt-1_34_1.so.1.34.1 /usr/lib/libboost_filesystem-gcc42-1_34_1.so.1.34.1 /usr/lib/libboost_filesystem-gcc42-mt-1_34_1.so.1.34.1 /usr/lib/libboost_filesystem-gcc41-1_34_1.so.1.34.1 /var/cache/apt/archives/libboost_filesystem-gcc41-mt-1_34_1.so.1.34.1 /var/cache/apt/archives/libboost_filesystem-gcc42-1_34_1.so.1.34.1 /var/cache/apt/archives/libboost_filesystem-gcc42-mt-1_34_1.so.1.34.1 /var/cache/apt/archives/libboost_filesystem-gcc41-1_34_1.so.1.34.1 bijay@cmp1:~/boost$ then i tried to compile like this
g++ -o second boostThread.cpp -lboost_filesystem -L/usr/lib/libboost_filesystem-gcc41-1_34_1.so.1.34.1
The option "-L" specifies the directory containing the library (not the library itself). /usr/lib is standard path, so you can omit passing "-L" option.
Try this: g++ -o second boostThread.cpp -lboost_filesystem-gcc42-1_34_1
I always create symlinks like /usr/lib/libboost_filesystem.so ---> /usr/lib/libboost_filesystem-gcc42-1_34_1.so after boost installation.
This results to something like this:
/usr/local/dev/boost-1.37.0/lib/libboost_filesystem.so -> /usr/local/dev/boost-1.37.0/lib/libboost_filesystem-gcc43.so // MANUALLY CREATED /usr/local/dev/boost-1.37.0/lib/libboost_filesystem-gcc43.so -> libboost_filesystem-gcc43-1_37.so.1.37.0 // AUTOMATICALLY CREATED BY BOOST
This approach allows write Makefiles independent of gcc and boost versions. Instead of writing -lboost_filesystem-gcc42-1_34_1 you write -lboost_filesystem.
It's strange that locate didn't find
/usr/lib/libboost_filesystem-gcc42-1_34_1.so It should be symlink to /usr/lib/libboost_filesystem-gcc42-1_34_1.so.1.34.1
it throws the same error.
/usr/bin/ld: cannot find -lboost_filesystem collect2: ld returned 1 exit status
Can u plz help me out.
On Fri, Jan 16, 2009 at 1:14 PM, Dmitry V. Krivenok <krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru> <mailto:krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru>>> wrote:
Bijay Panda wrote:
Hi All, I am trying to run boost1.34.1 in ubuntu 7.10. Compiling the program like this
g++ -o fst boostThread.cpp -lboost_filesystem
throws error like bellow.
/usr/bin/ld: cannot find -lboost_filesystem collect2: ld returned 1 exit status
Can any one please tell me how to get rid of this.
g++ can't find shared library libboost_filesystem.so
Provide the path to the library using -L option. For example g++ -o fst boostThread.cpp -lboost_filesystem -L/usr/local/boost-1.34.1/lib
If you don't know where library located try the following commands: sudo updatedb locate libboost_filesystem.so
On my system this command produces this output: krivenok@develop2 10:44:55 ~/dev_builds/boost-trunk/boost/date_time $ locate libboost_filesystem.so /usr/local/old_dev/boost-1.34.1/lib/libboost_filesystem.so /usr/local/dev/boost-1.37.0/lib/libboost_filesystem.so /usr/lib/libboost_filesystem.so krivenok@develop2 10:45:02
-- Thanks & Regards Bijay Kumar Panda
------------------------------------------------------------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org <mailto:Boost-users@lists.boost.org> <mailto:Boost-users@lists.boost.org <mailto:Boost-users@lists.boost.org>>
http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Sincerely yours, Dmitry V. Krivenok Orange System Company Saint-Petersburg, Russia work phone: +7 812 332-32-40 cellular phone: +7 921 576-70-91 e-mail: krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru> <mailto:krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru>>
web: http://www.orangesystem.ru skype: krivenok_dmitry jabber: krivenok_dmitry@jabber.ru <mailto:krivenok_dmitry@jabber.ru> <mailto:krivenok_dmitry@jabber.ru <mailto:krivenok_dmitry@jabber.ru>>
icq: 242-526-443
-- Thanks & Regards Bijay Kumar Panda Mob-9739591816 bijaykumar.mail@gmail.com <mailto:bijaykumar.mail@gmail.com> <mailto:bijaykumar.mail@gmail.com <mailto:bijaykumar.mail@gmail.com>> bijaykumar_panda@yahoo.com <mailto:bijaykumar_panda@yahoo.com> <mailto:bijaykumar_panda@yahoo.com <mailto:bijaykumar_panda@yahoo.com>>
-- Sincerely yours, Dmitry V. Krivenok Orange System Co., Ltd.
Saint-Petersburg, Russia work phone: +7 812 332-32-40 cellular phone: +7 921 576-70-91 e-mail: krivenok@orangesystem.ru <mailto:krivenok@orangesystem.ru> web: http://www.orangesystem.ru skype: krivenok_dmitry jabber: krivenok_dmitry@jabber.ru <mailto:krivenok_dmitry@jabber.ru> icq: 242-526-443
-- Thanks & Regards Bijay Kumar Panda Mob-9739591816 bijaykumar.mail@gmail.com <mailto:bijaykumar.mail@gmail.com> bijaykumar_panda@yahoo.com <mailto:bijaykumar_panda@yahoo.com>
-- Sincerely yours, Dmitry V. Krivenok Orange System Co., Ltd. Saint-Petersburg, Russia work phone: +7 812 332-32-40 cellular phone: +7 921 576-70-91 e-mail: krivenok@orangesystem.ru web: http://www.orangesystem.ru skype: krivenok_dmitry jabber: krivenok_dmitry@jabber.ru icq: 242-526-443
participants (1)
-
Dmitry V. Krivenok