所以不要把开发源的优先级调得比官方源还高,packman 源也是。
我回去看看这么调整优先级
最近学到 gcc 编译的时候会进行一种 name mangling 的操作。就是在用户定义的名字周围加一些乱七八糟的东西来防止名字冲突。
ZN4YAML6detail9node_data12empty_scalarB5cxx11E
其实就是 YAML node_data empty_scalar
然后顺藤摸瓜,就能发现他们在两年前,把一个静态常量,直接变成了静态函数。
一年前,yaml-cpp 在 factory 里面升级到 0.6.3, 但是 zypper 一时半会不升级,于是我们就偶然地中招了。他们这样改,正确的操作应该是直接把版本号改成 0.7。
Request 760350: Submit yaml-cpp - openSUSE Build Service
现在搜索 ZN4YAML6detail9node_data12empty_scalarB5cxx11E
能出来很多结果,估计还有一大堆的项目会陆陆续续中招。。。。。
Examples:
linux - mongod: symbol lookup error: mongod: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11 - Stack Overflow
Blender failed to launch after update. symbol lookup error: undefine symbol - Applications - openSUSE Forums
1160171 – Failed to launch (symbol lookup error: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11E)
1773357 – thinkfan: symbol lookup error: thinkfan: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11E
https://bugzilla.redhat.com/show_bug.cgi?id=1774164
[SOLVED] "blender: symbol lookup error" after installing blender-git / Newbie Corner / Arch Linux Forums
jbeder/yaml-cpp#484
Yamlcpp 项目本身八成以上的锅。