Ошибки при линковке в Qt5 с poppler

/usr/lib/libpoppler.so.50: неопределенная ссылка на std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20' Makefile:156: recipe for target 'DocViewer' failed /usr/lib/libsystemd.so.0: undefined reference tolzma_stream_decoder@XZ_5.0 '/usr/lib/libQt5Core.so: неопределенная ссылка на __cxa_throw_bad_array_new_length@CXXABI_1.3.8' /usr/lib/libsystemd.so.0: undefined reference tolzma_end@XZ_5.0' /usr/lib/libsystemd.so.0: undefined ссылка на `lzma_code@XZ_5.0 'collect2: error: ld возвратил 1 статус выхода make: *** [DocViewer] Ошибка 1 20:53:35: Процесс« / usr / bin / make »завершился с кодом 2.

Я получаю упомянутые выше ошибки при компиляции программы с использованием poppler в Qt5.

Ниже приведен файл моего проекта. Должен ли я что-то изменить?

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = DocViewer
TEMPLATE = app

INCLUDEPATH  += /usr/include/poppler/qt5
LIBS         += -L/usr/lib -lpoppler-qt5

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

person compiler    schedule 28.03.2015    source источник
comment
Похоже, -llzma тоже отсутствует.   -  person πάντα ῥεῖ    schedule 28.03.2015
comment
LIBS += -L/usr/lib -lpoppler-qt5 -llzma что-то вроде этого?   -  person compiler    schedule 28.03.2015
comment
да. Но есть еще одна ошибка компоновщика, связанная с std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20.   -  person πάντα ῥεῖ    schedule 28.03.2015
comment
может это иметь какое-то отношение к glibc версии, установленной в моей системе.   -  person compiler    schedule 28.03.2015
comment
Вполне может быть проблемой, да. Попробуйте установить актуальную версию GCC 4.9.2.   -  person πάντα ῥεῖ    schedule 28.03.2015


Ответы (1)


Для ошибки «__cxa_throw_bad_array_new_length@CXXABI_1.3.8» в libicu, похоже, проблема в несовместимой сборке icu (softfp vs hardfp).

У меня была та же ошибка, которую я решил, загрузив перестроенный ICU (чтобы самому не перестраивать его).

  • Загрузите двоичные файлы "POT" с сайта http://thebugfreeblog.blogspot.fr/2016/12/binaries-for-pot-550-beta1-on-qt-580.html.
  • lrzuntar файл
  • tar xf qtdeps.tar
  • на устройстве удалите libicu * (в моем случае с raspbian это было в usr / lib / arm-linux-gnueabihf) и перенесите libicu * из qtdeps туда
  • на устройстве удалите каталог include "unicode" (с raspbian он находился в / usr / include / arm-linux-gnueabihf / unicode) и скопируйте каталог include unicode из qtdeps оттуда.
  • выполнить повторную синхронизацию с устройства на системный root с помощью rsync
  • перенастроить и перестроить qtbase (после удаления файлов .o в qtbase / src / corelib, которые содержат «icu» в имени - или пересобрать Qt с нуля)
person David Faure    schedule 05.04.2017