Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QtWebEngineCore link error with Qt 15.5.2 - minizip.so



  • I recently built Qt 5.15.2 on a Linux machine that had previously been set up to build Qt 5.15.0 from source, including the web engine component.

    I had tested that earlier build by rebuilding our application against it on a different Linux machine. It built and ran fine.

    When I tried to build against the Qt 5.15.2 package I got linker errors because of missing minizip. As far as I can see, minizip is not installed on the machine in question but it was installed on the machine that Qt itself was built on.

    A couple of questions arise:

    1. Why did I not see the same errors with the 5.15.0 build? The issue was not there with our Qt 5.9.6 build either. This doesn't feel like the sort of thing that would change between point releases.
    2. If there is a link dependency on minizip.so, then presumably there is also a runtime dependency. Does this imply that we should package minizip with our application in case it is not present on the user's machine? Is it normal practice to have to package additional runtime dependencies with Qt applications? This is not something that I am aware we have worried about in the past (though Linux builds are not my area and I am still learning about this stuff now). If so, are there any deployment guidelines for determining what needs to be packaged?
    libminizip.so.1, needed by .../lib/libQt5WebEngineCore.so, not found (try using -rpath or -rpath-link)
    .../lib/libQt5WebEngineCore.so: undefined reference to 'zipClose'
    .../lib/libQt5WebEngineCore.so: undefined reference to 'zipCloseFileInZip'
    .../lib/libQt5WebEngineCore.so: undefined reference to 'zipOpen2'
    .../lib/libQt5WebEngineCore.so: undefined reference to 'fill_fopen_filefunc'
    .../lib/libQt5WebEngineCore.so: undefined reference to 'zipWriteInFileInZip'
    .../lib/libQt5WebEngineCore.so: undefined reference to 'zipOpenNewFileInZip4'
    collect2: error: ld returned 1 exit status
    


  • The mystery has a partial solution. I was able to obtain the config.log and config.summary from the build engineer who set up the build machine and created the Qt 5.15.0 build. That shows that the test for minizip failed and it was not included as an optional system library for Qt Web Engine.

    I also have the list of packages that the engineer installed on the machine and can see that minizip and minizip-devel are among them so I don't know why the check failed, unless for some reason they didn't get installed until after the build was created.

    In any case, maybe it would be better not to have this dependency enabled. Is there a way to force it to be disabled?


Log in to reply