Вопрос или проблема
Во время компиляции последней стабильной версии 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
.
Возможные причины возникновения ошибки:
-
Несоответствие версий библиотек: Хотя у вас установлена последняя версия
libxml2
(2.9.14), вы можете столкнуться с проблемами, если у вас имеется несколько установок или сборок этой библиотеки. Возможно, компилятор ссылается на другую (например, более старую) версию библиотеки, у которой нет необходимого символа. -
Проблемы с путями доступа: Убедитесь, что ваши переменные среды, такие как
LD_LIBRARY_PATH
, правильно настроены, и что они указывают на корректные пути к библиотекам. Если библиотека установлена не в стандартном месте, возможно, компилятор не находит её. -
Кеширование библиотек: Если библиотеки были обновлены, возможно, кеш библиотек не синхронизирован. Попробуйте выполнить команду
sudo ldconfig
, чтобы обновить кеш динамических библиотек.
Рекомендуемые шаги для устранения проблемы:
-
Проверьте наличие нескольких версий libxml2:
Выполните следующую команду:locate libxml2.so
Убедитесь, что нет нескольких версий и что они не конфликтуют между собой.
-
Проверьте динамические зависимости с помощью ldd:
Используйте командуldd
для того, чтобы проверить, какие библиотеки подключаются кxmllint
:ldd /usr/local/bin/xmllint
Обратите внимание на строки, где отсутствуют библиотеки или указываются неправильные пути.
-
Переустановите libxml2:
Попробуйте переустановить библиотеку:sudo apt-get remove --purge libxml2 libxml2-dev libxml2-utils sudo apt-get install libxml2 libxml2-dev libxml2-utils
-
Убедитесь, что вы используете правильный xmllint:
Возможно, в вашем пути есть другая версияxmllint
, которая конфликтует. Проверьте, какой именноxmllint
запускается с помощью:which xmllint
-
Соберите проект с указанием пути к библиотекам:
Если проблема сохраняется, попробуйте указать 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. Всегда важно поддерживать ваши библиотеки в актуальном состоянии и следить за тем, чтобы компилятор использовал необходимую версию. Если проблема сохраняется, рассмотрите возможность обращения к сообществу разработчиков или службам поддержки для дополнительной помощи.