我有一个链接到libboost_regex.so.1.68
的C ++程序,我在不同位置有两个版本的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)
第二个版本用于运行C ++程序的Python绑定。
运行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以避免不匹配吗?