But get it to compile I did... read on for the secret words you have to utter...
First thing I did was:
yum erase boost boost-devel
This got rid of the very old 1.33 library. I then ran this:
yum install boost141 boost141-devel boost141-program-options boost141-regex boost141-thread boost141-system
I then had to hack the makefile to add this to my CFLAGS:
-I/usr/include/boost141/
That got me compiling. But not linking. I changed my LDFLAGs to look like this but still it would not link:
-L/usr/lib64/boost141 -lboost_regex -lboost_program_options -lboost_system -lboost_thread
I played around with various -L settings, until I had a breakthrough. I noticed the above line complained with:
/usr/bin/ld: cannot find -lboost_thread
But some different -L settings instead gave me:/usr/bin/ld: cannot find -lboost_regex
Blink and you miss it, and indeed I had. My above line was linking with most of Boost, just not boost_thread. In other words, I was really close and hadn't realized it. A bit more poking around discovered that Ubuntu calls it "boost_thread", while Centos calls it "boost_thread-mt" (careful, the first one is an underline, the second one is a hyphen). So, the final magic line for Centos was:
-L/usr/lib64/boost141 -lboost_regex -lboost_program_options -lboost_system -lboost_thread-mt
NOTE: I did not do any post-installation steps after the yum install steps. I saw some people suggesting copying files from one place to another but I did not need to. (Also, -L/usr/lib64 should be sufficient, as every thing is symlinked; maybe even the -L flag is not needed at all... but I'm in the "If it ain't broke." mindset now, so no more experimentation for me!)
1 comment:
Marvellous.
Almost all the things I needed to build mongoDb client on Centos 5. (never knew about /usr/lib64)
Thanks for taking the time to post this.
Dan.
Post a Comment