带有GCC 7.2.0和-O3的未定义符号

时间:2017-11-13 23:11:25

标签: python c++ gcc cmake

我们有一个相当大的框架,它包含多个CMakeLists.txt文件,并包含多个共享库。最后我们使用SWIG生成一个Cython接口。

一切都适用于MacOS,即我们可以使用cmakemake install进行编译,并使用python中的import x框架。使用GCC-6在Ubuntu上一切都运行良好。

但是,当使用GCC 7.2.0(使用Ubuntu 17.10)和CMAKE_BUILD_TYPE=Release时,我们会收到以下错误:

ImportError: /home/madsohm/.local/lib/libbhc.so: undefined symbol: _ZNSaIlEC1Ev

尝试import时。使用CMAKE_BUILD_TYPE=Debug工作正常,因此必须是由-O3添加的Release才是罪魁祸首。

我试图在so - 文件中搜索符号,然后

$ scanelf -l -s _ZNSaIlEC1Ev | grep _ZNSaIlEC1Ev
ET_DYN _ZNSaIlEC1Ev /usr/lib/libbhxx.so
ET_DYN _ZNSaIlEC1Ev /usr/lib/libbhc.so
ET_DYN _ZNSaIlEC1Ev /usr/lib/libbh.so

Debug但只有

$ scanelf -l -s _ZNSaIlEC1Ev | grep _ZNSaIlEC1Ev
ET_DYN _ZNSaIlEC1Ev /usr/lib/libbhc.so

Release

_ZNSaIlEC1Ev demangled是std::allocator<long>::allocator()

无论如何,我可以弄清楚这个符号是指什么,或者错误在哪里以及我能做些什么呢?

0 个答案:

没有答案