The failure to detect Boost is indeed due to the linker error when the configure script tries to build the test code. I checked the config.log file and the command used to build the test code is as follows:
g++ -o conftest -lboost_thread-mt -m64 conftest.cpp which causes the build to fail with the same errors mentioned in my previous email. So what do I change in the configure.in file so that the build command line arguments are generated as follows: g++ conftest.cpp -o conftest -lboost_thread-mt -m64 Thanks and regards, ~Plug On Wed, Apr 18, 2012 at 3:28 PM, Plug Gulp <[email protected]> wrote: > Hi, > > I am trying to build Valgrind 3.7.0 on Ubuntu 11.10 x86_64. I have > Boost 1.46 pre-installed on my system. The boost libraries are > installed under /usr/lib and the headers are under /usr/include. When > I try to configure Valgrind for build by running the configure script > as follows, the script thinks boost is not available on the system > where as it is indeed available: > > $ ./configure > : > : > checking for boost... no > : > : > Maximum build arch: amd64 > Primary build arch: amd64 > Secondary build arch: > Build OS: linux > Primary build target: AMD64_LINUX > Secondary build target: > Platform variant: vanilla > Primary -DVGPV string: -DVGPV_amd64_linux_vanilla=1 > Default supp files: exp-sgcheck.supp xfree-3.supp > xfree-4.supp glibc-2.X-drd.supp glibc-2.34567-NPTL-helgrind.supp > glibc-2.X.supp > $ > > > Even though Boost development libraries are installed on my system, > the configure script fails to detect it. I looked at the configure.in > file and checked the section in the file where Boost detection is > done: > > AC_MSG_CHECKING([for boost]) > > AC_LANG(C++) > safe_CXXFLAGS=$CXXFLAGS > CXXFLAGS="-lboost_thread-mt $mflag_primary" > > AC_LINK_IFELSE([AC_LANG_SOURCE([ > #include <boost/thread.hpp> > static void thread_func(void) > { } > int main(int argc, char** argv) > { > boost::thread t(thread_func); > return 0; > } > ])], > [ > ac_have_boost_1_35=yes > AC_SUBST([BOOST_CFLAGS], []) > AC_SUBST([BOOST_LIBS], ["${CXXFLAGS}"]) > AC_MSG_RESULT([yes]) > ], [ > ac_have_boost_1_35=no > AC_MSG_RESULT([no]) > ]) > > CXXFLAGS=$safe_CXXFLAGS > AC_LANG(C) > > AM_CONDITIONAL([HAVE_BOOST_1_35], [test x$ac_have_boost_1_35 = xyes]) > > > > From the above section we can see that there is a small piece of code > compiled and linked with libboost_thread-mt library to check whether > Boost is supported on the platform. The code is as follows: > > #include <boost/thread.hpp> > static void thread_func(void) > { } > int main(int argc, char** argv) > { > boost::thread t(thread_func); > return 0; > } > > I copied this code into a C++ source file and built it as follows: > > $ g++ -lboost_thread-mt test_boost.cpp > > I get following errors: > > /tmp/ccZFm6Ju.o: In function `main': > test_boost.cpp:(.text+0x39): undefined reference to `boost::thread::~thread()' > /tmp/ccZFm6Ju.o: In function > `boost::detail::thread_data_base::thread_data_base()': > test_boost.cpp:(.text._ZN5boost6detail16thread_data_baseC2Ev[_ZN5boost6detail16thread_data_baseC5Ev]+0x24): > undefined reference to `vtable for boost::detail::thread_data_base' > /tmp/ccZFm6Ju.o: In function `boost::thread::thread<void (*)()>(void > (*)(), boost::disable_if<boost::is_convertible<void (*&)(), > boost::detail::thread_move_t<void (*)()> >, > boost::thread::dummy*>::type)': > test_boost.cpp:(.text._ZN5boost6threadC2IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE[_ZN5boost6threadC5IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE]+0x30): > undefined reference to `boost::thread::start_thread()' > /tmp/ccZFm6Ju.o: In function `boost::detail::thread_data<void > (*)()>::~thread_data()': > test_boost.cpp:(.text._ZN5boost6detail11thread_dataIPFvvEED2Ev[_ZN5boost6detail11thread_dataIPFvvEED5Ev]+0x1f): > undefined reference to > `boost::detail::thread_data_base::~thread_data_base()' > /tmp/ccZFm6Ju.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEE[typeinfo > for boost::detail::thread_data<void (*)()>]+0x10): undefined reference > to `typeinfo for boost::detail::thread_data_base' > collect2: ld returned 1 exit status > > > But when I give the build command as follows in slightly different > way, the build succeeds: > > $ g++ test_boost.cpp -lboost_thread-mt > > > Is the above build failure the reason why Valgrind configure script > thinks that boost is not available on the system? How do I fix the > configure.in file to help Valgrind detect Boost? > > Thanks and regards, > > ~Plug ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
