
I am getting the following runtime link error when running a process that has a dependency on libboost_regex-gcc.so ld.so.1: configsrv: fatal: relocation error: file /esdadev/dev/gdprosch/7.1/solaris/debug/lib/libesda.so: symbol _ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE9 do_assignEPKcS7_j: referenced symbol not found The demangled symbol is... nm --demangle ../lib/libesda.so | grep do_assign U boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned) My linkage looks to be okay in my library (libesda.so): ldd ../lib/libesda.so | grep boost libboost_date_time-gcc.so => /esdadev/extsrc/solaris/boost/lib/libboost_date_time-gcc.so libboost_filesystem-gcc.so => /esdadev/extsrc/solaris/boost/lib/libboost_filesystem-gcc.so libboost_regex-gcc.so => /esdadev/extsrc/solaris/boost/lib/libboost_regex-gcc.so The function is in /boost/regex/v4/basic_regex.hpp basic_regex& do_assign(const charT* p1, const charT* p2, flag_type f); I am running on a Solaris 2.8 host where my application and boost 1_33_1 were built using gcc 3.3.1 I have seen two other posting in the archives (V824.1 and V850.3) where other users had similar problems but I saw no resolution posted. I have verified that the symbol is present in the debug and archive versions of the library and I have even tried linking against those with the same results. nm --demangle $BOOST_HOME/lib/libboost_regex-gcc-d.so | grep do_assign 000a65ac W boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned) 000e3b70 W boost::basic_regex<wchar_t, boost::regex_traits<wchar_t, boost::cpp_regex_traits<wchar_t> > >::do_assign(wchar_t const*, wchar_t const*, unsigned) Any insight would be most helpful. Thanks in advance :-) Greg Prosch
participants (1)
-
gdprosch@micron.com