Ну, этот вопрос занял много времени.Я, конечно, не эксперт в тонкостях gcc
, g++
, статических и динамических линковок и т. Д., Что, вероятно, и является причиной путаницы.
Что здесь произошло?Кажется, что Inkscape использует два типа библиотек.Обычные внешние библиотеки (которые могут контролироваться --enable-static
и -shared
, но также дюжина или около того внутренних библиотек (некоторые из которых являются частными копиями внешних библиотек, таких как libcroco
), которые не контролируются --enable-static
и друзья, но запрашивают библиотеки самостоятельно:
libcroco/libcroco.a
libavoid/libavoid.a
libgdl/libgdl.a
libuemf/libuemf.a
libcola/libcola.a
inkgc/libinkgc.a
libvpsc/libvpsc.a
livarot/libvarot.a
2geom/lib2geom.a
libdepixelize/libdepixelize.a
util/libutil.a
libinkversion.a
Кажется, что эти «внутренние» библиотеки всегда статически связаны. Они волшебным образом появляются в последней строке ссылки. Кажется, что их управление не контролируется.совместимость с общими библиотеками, загружаемыми системой automake
.
В моем случае libpng15.so
был извлечен (вероятно, libcroco
, который извлек libgtkmm
/ libcairomm
) внутреннимбиблиотеки, в то время как libpng16.so
был запрошен внешними библиотеками, которые я тщательно поддерживаю с libpng16
.
Slackware - это Qt
-центрический дистрибутив, который поддерживает только минимум GTK
мираПоэтому я регулярно пытаюсь обновить эту часть отдельно. На движущейся цели, такой как Slackware-current
, это не всегда легко. С другой стороны, все поиски, которые я делал,решить эту проблему показывает достаточно большое количество людей с той же проблемой, большинство из которых не использует -current
, или даже Slackware
вообще.
Решение, конечно, было перекомпилировать libcairomm
, libgtkmm
и пару других статических библиотек, затем перекомпилируйте Inkscape
.
Оглядываясь назад, простая проверка списка библиотек в команде final link могла бы предупредить о проблеме, показывая две разные версииlibpng
включено.С другой стороны, это довольно частный случай, поскольку версии имеют разные имена, но имеют одну и ту же функцию, что довольно уникально.Извините за длинный пост - надеюсь, это поможет другим с подобными проблемами.