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_traitsIcEEEEE9do_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