У меня есть программа C ++, которая ссылается на libboost_regex.so.1.68
, у меня есть две версии файлов so в разных местах:
/usr/local/lib/libboost_regex.so.1.68 (compiled with gcc-7)
/usr/share/miniconda3/lib/libboost_regex.so.1.68 (binaries installed by conda)
Вторая версия предназначена для запуска привязки Pythons моей программы C ++.При запуске привязок python, python пытается использовать второй файл .so
, и я получаю ошибку:
undefined symbol : boost::re_detail_106800::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char const*, char const*) const
Я пытался получить символы обоих файлов .so
, используя: (* nm *.so | c++filt
) и понял, что между ними есть разница:
В первой библиотеке есть символ:
cpp_regex_traits_implementation<char>::transform_primary(...
В то время как во второй папке so (той, которая вызывает проблемы) есть:
cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](...
Есть похожие, за исключением [abi:cxx11]
Что такое [abi:cxx11]
?Могу ли я перестроить свой /usr/local
буст, чтобы в его символах был abi :: cxx11, чтобы избежать несоответствия?