Я разрабатываю приложение с Qt, используя qtpdf на C ++. Я хочу настроить Gitlab CI для своего проекта, поэтому я пытаюсь скомпилировать и запустить тесты в контейнере docker, чтобы создать образ docker для CI. Хотя у меня нет проблем с компиляцией qtpdf на моей машине, я не могу сделать это в контейнере docker.
Вот мой журнал компиляции (из ошибки):
g++ -Wl,-z,relro -Wl,--as-needed -Wl,--no-undefined -Wl,--version-script,QtPdf.version -Wl,-O1 -Wl,--enable-new-dtags -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5Pdf.so.5 -o libQt5Pdf.so.5.9.0 .obj/jsbridge.o .obj/qpdfbookmarkmodel.o .obj/qpdfdocument.o .obj/qpdfpagenavigation.o .obj/qpdfpagerenderer.o .obj/moc_qpdfnamespace.o .obj/moc_qpdfpagerenderer.o -lQt5Gui -lQt5Core -lpthread -L/soundpdf/src/3rdparty/qtpdf/lib -lqtpdfium -lQt5Network -lQt5Core -lpthread -lGL
/usr/bin/ld: .obj/qpdfbookmarkmodel.o: in function `QPdfBookmarkModel::setStructureMode(QPdfBookmarkModel::StructureMode)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:177: undefined reference to `FPDFBookmark_GetFirstChild'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:190: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:193: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:195: undefined reference to `FPDFBookmark_GetDest'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:196: undefined reference to `FPDFDest_GetPageIndex'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:205: undefined reference to `FPDFBookmark_GetNextSibling'
/usr/bin/ld: .obj/qpdfbookmarkmodel.o: in function `QPdfBookmarkModel::setDocument(QPdfDocument*)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:177: undefined reference to `FPDFBookmark_GetFirstChild'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:190: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:193: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:195: undefined reference to `FPDFBookmark_GetDest'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:196: undefined reference to `FPDFDest_GetPageIndex'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:205: undefined reference to `FPDFBookmark_GetNextSibling'
/usr/bin/ld: .obj/qpdfbookmarkmodel.o: in function `QPdfBookmarkModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:177: undefined reference to `FPDFBookmark_GetFirstChild'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:190: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:193: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:195: undefined reference to `FPDFBookmark_GetDest'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:196: undefined reference to `FPDFDest_GetPageIndex'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:205: undefined reference to `FPDFBookmark_GetNextSibling'
/usr/bin/ld: .obj/qpdfbookmarkmodel.o: in function `QPdfBookmarkModelPrivate::appendChildNode(BookmarkNode*, void*, int, void*)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:177: undefined reference to `FPDFBookmark_GetFirstChild'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:190: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:193: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:195: undefined reference to `FPDFBookmark_GetDest'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:196: undefined reference to `FPDFDest_GetPageIndex'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:205: undefined reference to `FPDFBookmark_GetNextSibling'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfbookmarkmodel.cpp:190: undefined reference to `FPDFBookmark_GetTitle'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::updateLastError() [clone .part.25]':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:134: undefined reference to `FPDF_GetLastError'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::initiateAsyncLoadWithTotalSizeKnown(unsigned long long)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:221: undefined reference to `FPDFAvail_Create'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::tryLoadDocument()':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:243: undefined reference to `FPDFAvail_IsDocAvail'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:248: undefined reference to `FPDFAvail_GetDocument'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:254: undefined reference to `FPDF_CloseDocument'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::checkComplete()':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:277: undefined reference to `FPDF_GetPageCount'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:281: undefined reference to `FPDFAvail_IsPageAvail'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocument::pageSize(int) const':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:554: undefined reference to `FPDF_GetPageSizeByIndex'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocument::render(int, QSize, QPdfDocumentRenderOptions)':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:575: undefined reference to `FPDF_LoadPage'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:581: undefined reference to `FPDFBitmap_CreateEx'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:616: undefined reference to `FPDF_RenderPageBitmap'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:618: undefined reference to `FPDFBitmap_Destroy'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:620: undefined reference to `FPDF_ClosePage'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocument::metaData(QPdfDocument::MetaDataField) const':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:476: undefined reference to `FPDF_GetMetaText'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:479: undefined reference to `FPDF_GetMetaText'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::QPdfDocumentPrivate()':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:72: undefined reference to `FPDF_InitLibrary'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::clear()':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:103: undefined reference to `FPDF_CloseDocument'
/usr/bin/ld: /soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:107: undefined reference to `FPDFAvail_Destroy'
/usr/bin/ld: .obj/qpdfdocument.o: in function `QPdfDocumentPrivate::~QPdfDocumentPrivate()':
/soundpdf/src/3rdparty/qtpdf/src/pdf/qpdfdocument.cpp:95: undefined reference to `FPDF_DestroyLibrary'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:101: ../../lib/libQt5Pdf.so.5.9.0] Error 1
make[2]: Leaving directory '/soundpdf/src/3rdparty/qtpdf/src/pdf'
make[1]: *** [Makefile:72: sub-pdf-make_first] Error 2
make[1]: Leaving directory '/soundpdf/src/3rdparty/qtpdf/src'
make: *** [Makefile:47: sub-src-make_first] Error 2
Базовый образ, который я использую, - это debian: последние и установленные пакеты: build-essential
, qt5-default
, git
, qtbase5-private-dev
. Я также попытался с Ubuntu: latest и Ubuntu: Disco и получил ту же ошибку. Единственные команды, которые я запускаю:
- Клонирование моего репо
- Загрузка подмодулей
qmake
make
Предыдущие команды ведут к журналу ошибок, который я вставил ранее.
Что я пропустил и что я должен сделать, чтобы собрать qtpdf?