Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-103106

Regression: online installer ships ICU development libraries without headers

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P1: Critical P1: Critical
    • None
    • 6.x
    • Packaging & Installer
    • None
    • Fedora 35
    • Linux/Other display system

      This seems to be a regression of QTBUG-27930. It was fixed for some Qt5 releases, but it is happening again in Qt >= 5.9 and all Qt6.

      In Qt6.x it is even more important for users to be able to integrate libICU in Qt applications, because QTBUG-86437.

      The online installer ships the ICU development libraries (the files with the .so suffix, without a number) but not the corresponding ICU headers. The result is that when linking a project you will get errors like:

      undefined reference to `ucnv_open_69'
      

      The Qt 6.x libraries are compiled against ICU 56, but your system libraries may be newer. For instance Fedora 35 comes with ICU 69. The compiler included the ICU 69 headers installed in your system (at /usr/include), but the linker is trying to use the ICU 56 libraries, installed by the online installer probably at your $HOME.

      One solution is to remove all the ICU development libraries from the Qt prefix. For instance:

      libicudata.so        <- remove this symlink!
      libicudata.so.56     <- leave this symlink alone
      libicudata.so.56.1   <- leave also the library file 
      

      This project shows the issue: https://github.com/pedrolcl/icu_qt_poc

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            releaseteam Qt Release Team
            plcl Pedro López-Cabanillas
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes