GCC: Как узнать, почему библиотека включена в исполняемый файл - PullRequest
0 голосов
/ 24 октября 2018

Это проблема:

(В 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.16, и libpng-1.5.13 указаны по необходимости.

Итак, я подозревал, что для некоторых других библиотек требуется libpng-1.5.13.Я сделал небольшую программу на Python, которая берет все библиотеки (кроме libpngs) и применяет ldd к каждой из них.Ни один из них не указан libpng15.Что теперь?Я подозреваю, что если какой-либо из вторичных библиотек потребуется libpng15, она будет указана здесь, но на всякий случай я сделал поиск рекурсивным.Не повезло.

Так что, очевидно, inkscape сам запросил старую версию.Простой поиск по всем файлам в дереве поиска показал только строку «png15» в программе просмотра и настоящий исполняемый файл inkscape.

Возможно, мои старые программы все еще связаны с png15, поэтому я, вероятно, хочу сохранить этоверсия вокруг.

Большинство, если не все ссылки в сети, упоминающие эту ошибку (или аналогичную), относятся к программам с очень старым pnglibs (1.2.4x), пытающимся использовать более новую версию, но здесь это другой путь.около.

libpng-config --version отчеты 1.6.16

Есть какие-либо предложения, как определить источник этой проблемы?В частности, почему в Inkscape включен старый libpng?

...