动态链接库的问题

时间:2016-01-05 13:14:32

标签: c++ linux qt shared-libraries dynamic-linking

问题:
当我尝试打开一些应用程序时,我从链接器中得到错误,如下所示:

/usr/lib/x86_64-linux-gnu/libpoppler-qt5.so.1: undefined symbol: _ZN6QDebugD1Ev

受影响的一些应用

  • texstudio显示
    /usr/lib/x86_64-linux-gnu/libpoppler-qt5.so.1: undefined symbol: _ZN6QDebugD1Ev
  • IPython的qtconsole显示了 /usr/lib/python3.5/site-packages/PyQt5/QtCore.so: undefined symbol: _ZNK12QStorageInfo11displayNameEv
  • konsole(KDE的终端模拟器 - 我正在使用Unity)显示 /usr/lib/x86_64-linux-gnu/libKF5ItemViews.so.5: undefined symbol: ...
  • granatier(KDE游戏),KSysguard和KAddressbook也显示KF5库中的错误
  • VLC似乎也受到影响,因为它说Qt 4有问题(见下文)。然而,它并没有说它是一个链接问题。

这似乎是动态链接的问题,我猜我的问题是在库中

Qt的
所有这些错误似乎来自Qt链接库(“Qt”出现在大多数文件名和大多数符号名称中)。 AFAIK KDE依赖于Qt,这可以解释为什么所有KDE应用程序都失败了 它似乎影响到Qt 4和5

我也有一个similar problem with ssl,但它最终消失了(可能是更新)。

我正在使用ld 2.25

为什么我在这里问
我意识到我的问题不是关于编程。 help center表示

  

关于通用计算硬件和软件的问题是Stack Overflow的主题,除非它们直接涉及主要用于编程的工具。

这似乎是链接器/动态库的问题所以我想说它涉及编程工具 如果您不同意,请备用downvotes并撰写评论,向您解释POV。

2 个答案:

答案 0 :(得分:0)

好的,如果你切换到'不稳定',这种问题会发生很多。

您需要做的是将所有包降级回“稳定”。修改sources.list是不够的,你还需要改变优先级。

看一下这个帖子:https://unix.stackexchange.com/questions/117122/how-to-get-back-from-testing-to-stable-kernel-downgrade

答案 1 :(得分:0)

好的,所以问题的根源似乎是我在libQt5Core.so.5中有/usr/local/lib之类的Qt链接库。当我删除它们时,一切都再次起作用 我已经读过包管理器没有放任何库,所以很可能是我犯了一个愚蠢的错误。看起来它最终根本就不是一个编程问题。