1

Я пытаюсь запустить проект Qt с CMake в Docker-контейнере на основе Ubuntu 18.04. Когда я бегу cmake и make команды для моего проекта, я получаю следующие ошибки.

/usr/local/Qt-5.12.0/lib/libQt5Core.a(qregularexpression.o): In function `QThreadStorage<QPcreJitStackPointer*>::deleteData(void*)':
qregularexpression.cpp:(.text._ZN14QThreadStorageIP20QPcreJitStackPointerE10deleteDataEPv[_ZN14QThreadStorageIP20QPcreJitStackPointerE10deleteDataEPv]+0x12): undefined reference to `pcre2_jit_stack_free_16'
/usr/local/Qt-5.12.0/lib/libQt5Core.a(qregularexpression.o): In function `safe_pcre2_match_16(pcre2_real_code_16 const*, unsigned short const*, int, int, int, pcre2_real_match_data_16*, pcre2_real_match_context_16*)':
qregularexpression.cpp:(.text._ZL19safe_pcre2_match_16PK18pcre2_real_code_16PKtiiiP24pcre2_real_match_data_16P27pcre2_real_match_context_16+0x32): undefined reference to `pcre2_match_16'

... эти неопределенные ссылки продолжаются ...

/usr/local/Qt-5.12.0/lib/libQt5Core.a(qlibrary_unix.o): In function `QLibraryPrivate::load_sys()':
qlibrary_unix.cpp:(.text._ZN15QLibraryPrivate8load_sysEv+0x628): undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
CMakeFiles/db.dir/build.make:123: recipe for target 'db' failed
make[2]: *** [db] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/db.dir/all' failed
make[1]: *** [CMakeFiles/db.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Я попытался изменить свой файл CMakeLists.txt, чтобы выяснить, не является ли это причиной проблемы, добавить каталоги и пути, но это, похоже, не является причиной. Я пытаюсь изменить LIBRARY_PATH, но у меня нет результатов. Есть ли другой подход для решения этой проблемы?

1 ответ1

0

Через некоторое время, пытаясь заставить его работать, я решил перенастроить и переустановить Qt с той же версией для докера.

У меня были параметры конфигурации в Dockerfile

bash ./configure -opensource -confirm-license -static -no-accessibility -sql-sqlite -sqlite -no-qml-debug \
   -no-harfbuzz -openssl-linked -qt-pcre -no-dbus -nomake tools \
   -no-xkbcommon-evdev -no-xinput2 -no-xcb-xlib -no-glib -qt-xcb -no-compile-examples -nomake examples \
   -no-gif -qt-doubleconversion -no-gtk \

и изменил их на это

bash ./configure -opensource -confirm-license -no-accessibility -sql-odbc -sql-sqlite -sqlite -gui -widgets -nomake tools -no-compile-examples -nomake examples -qt-doubleconversion\
    && make install

Я добавил параметры графического интерфейса и виджетов и решил установить больше инструментов. Этот подход исправил неопределенные ссылки для разных библиотек, которые CMake не мог найти при сборке исполняемого файла для проекта. Хотя проблема была решена, я закончил с изображением докера большего размера (на 7 Гб больше), так что это быстрое решение, но не лучшее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .