неопределенный символ: xmlMemSize при компиляции webkitgtk-2.46.3

Вопрос или проблема

Во время компиляции последней стабильной версии webkitgtk-2.46.3 я получаю эту ошибку:

raphy@raohy:~/Downloads/webkitgtk-2.46.3$ cmake –build builddir/

[ 92%] Построена цель WebCore_CopyPrivateHeaders
[ 92%] Построена цель WebKit-forwarding-headers
[ 92%] Генерация ../../WebKitGTK/DerivedSources   
/ModernMediaControlsGResourceBundle.c,     ../../WebKitGTK/DerivedSources 
/ModernMediaControlsGResourceBundle.c.deps
 /usr/local/bin/xmllint: ошибка поиска символа: /usr/local/bin/xmllint: неопределенный символ: xmlMemSize
/home/raphy/Downloads/webkitgtk-2.46.3/builddir/WebKitGTK/DerivedSources    /ModernMediaControlsGResourceBundle.xml: Дочерний процесс завершился с кодом 127.

Но подходящая библиотека xml2 была обнаружена:

raphy@raohy:~/Downloads$ tar -xf webkitgtk-2.46.3.tar.xz
raphy@raohy:~/Downloads$ cd webkitgtk-2.46.3/
raphy@raohy:~/Downloads/webkitgtk-2.46.3$

raphy@raohy:~/Downloads/webkitgtk-2.46.3$ cmake -B builddir -DPORT=GTK    
-DUSE_GSTREAMER_WEBRTC=TRUE -DENABLE_WEB_RTC=ON -DUSE_GTK4=OFF
-- Идентификация компилятора C: GNU 12.3.0
-- Идентификация компилятора CXX: GNU 13.2.0
-- Обнаружение информации о ABI компилятора C
-- Обнаружение информации о ABI компилятора C - выполнено
-- Проверка работоспособности компилятора C: /usr/bin/cc - пропущено
-- Обнаружение особенностей компиляции C
-- Обнаружение особенностей компиляции C - выполнено
-- Обнаружение информации о ABI компилятора CXX
-- Обнаружение информации о ABI компилятора CXX - выполнено
-- Проверка работоспособности компилятора CXX: /usr/bin/c++ - пропущено
-- Обнаружение особенностей компиляции CXX
-- Обнаружение особенностей компиляции CXX - выполнено
 CMake Внимание в Source/cmake/WebKitCommon.cmake:10 (сообщение):
  Не указано значение CMAKE_BUILD_TYPE, используется значение по умолчанию RelWithDebInfo.
Стек вызовов (последний вызов первым):
  CMakeLists.txt:16 (включить)

-- Найдена LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (найдена подходящая версия "2.9.14", минимально необходимая "2.8.0")   // <---------------------------------------------------------

libxml2 libxml2-dev libxml2-utils уже установлены и являются самой новой версией:

raphy@raohy:~$ sudo apt-get install libxml2 libxml2-dev libxml2-utils
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
libxml2 уже самой новой версии (2.9.14+dfsg-1.3ubuntu3).
libxml2-dev уже самой новой версии (2.9.14+dfsg-1.3ubuntu3).
libxml2-utils уже самой новой версии (2.9.14+dfsg-1.3ubuntu3).

ОС: Ubuntu 24.04

Что я упускаю? Как сделать так, чтобы это заработало?

Ответ или решение

Ошибка "undefined symbol: xmlMemSize" при компиляции webkitgtk-2.46.3 возникает, когда программа пытается использовать символ (функцию или переменную), который не был определён в библиотеке, с которой она связана. В данном случае это символ xmlMemSize, который относится к библиотеке libxml2.

Возможные причины возникновения ошибки:

  1. Несоответствие версий библиотек: Хотя у вас установлена последняя версия libxml2 (2.9.14), вы можете столкнуться с проблемами, если у вас имеется несколько установок или сборок этой библиотеки. Возможно, компилятор ссылается на другую (например, более старую) версию библиотеки, у которой нет необходимого символа.

  2. Проблемы с путями доступа: Убедитесь, что ваши переменные среды, такие как LD_LIBRARY_PATH, правильно настроены, и что они указывают на корректные пути к библиотекам. Если библиотека установлена не в стандартном месте, возможно, компилятор не находит её.

  3. Кеширование библиотек: Если библиотеки были обновлены, возможно, кеш библиотек не синхронизирован. Попробуйте выполнить команду sudo ldconfig, чтобы обновить кеш динамических библиотек.

Рекомендуемые шаги для устранения проблемы:

  1. Проверьте наличие нескольких версий libxml2:
    Выполните следующую команду:

    locate libxml2.so

    Убедитесь, что нет нескольких версий и что они не конфликтуют между собой.

  2. Проверьте динамические зависимости с помощью ldd:
    Используйте команду ldd для того, чтобы проверить, какие библиотеки подключаются к xmllint:

    ldd /usr/local/bin/xmllint

    Обратите внимание на строки, где отсутствуют библиотеки или указываются неправильные пути.

  3. Переустановите libxml2:
    Попробуйте переустановить библиотеку:

    sudo apt-get remove --purge libxml2 libxml2-dev libxml2-utils
    sudo apt-get install libxml2 libxml2-dev libxml2-utils
  4. Убедитесь, что вы используете правильный xmllint:
    Возможно, в вашем пути есть другая версия xmllint, которая конфликтует. Проверьте, какой именно xmllint запускается с помощью:

    which xmllint
  5. Соберите проект с указанием пути к библиотекам:
    Если проблема сохраняется, попробуйте указать CMake точный путь к вашей установке libxml2:

    cmake -B builddir -DPORT=GTK -DUSE_GSTREAMER_WEBRTC=TRUE -DENABLE_WEB_RTC=ON -DUSE_GTK4=OFF -DXML2_INCLUDE_DIR=/usr/include/libxml2 -DXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so

Заключение

Ошибка "undefined symbol: xmlMemSize" может быть сложной, но следуя этим шагам по устранению неполадок, вы сможете выявить источник проблемы и успешно скомпилировать webkitgtk-2.46.3. Всегда важно поддерживать ваши библиотеки в актуальном состоянии и следить за тем, чтобы компилятор использовал необходимую версию. Если проблема сохраняется, рассмотрите возможность обращения к сообществу разработчиков или службам поддержки для дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...