首页 > 解决方案 > GCC:如何找出可执行文件中包含库的原因

问题描述

这就是问题:

(在 Linux Slackware64 上)我编译了 Inkscape (0.92.3),发现导出到 PNG 不起作用。终端上的指示告诉我:

libpng warning: Application built with libpng-1.6.16 but running with 1.5.13

第一个反应是使用ldd. 事实上,两者libpng-1.6.16libpng-1.5.13被列为必要的。

所以,我怀疑其他一些库需要libpng-1.5.13. 我制作了一个小型 Python 程序,它采用所有库(libpngs 除外)并应用于ldd每个库。他们都没有列出libpng15。现在怎么办?我怀疑如果需要任何二级库libpng15,它会在此处列出,但是,以防万一我使搜索递归。没运气。

因此,显然,inkscape它本身要求的是旧版本。在搜索树中的所有文件中进行简单搜索仅在查看器和实际的 inkscape 可执行文件中显示字符串“png15”。

我的一些旧程序可能仍然与 png15 相关联,所以我可能想保留那个版本。

大多数(如果不是所有)网络上提到此错误(或类似错误)的引用都是指具有非常旧的 pnglibs(1.2.4x)的程序试图使用较新的版本,但这里是相反的。

libpng-config --version报告1.6.16

任何建议如何确定这个问题的根源?特别是为什么inkscape包含旧的libpng?

标签: gccdynamic-linkinginkscapelibpng

解决方案


推荐阅读