Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.x
-
None
-
Fedora 35
Description
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
Attachments
Issue Links
- relates to
-
QTBUG-76272 ICU libs shipped with Qt have wrong RPATH on Linux
- Reported
-
QTBUG-27930 unresolved ICU symbols due to shipping lib ICU without headers.
- Closed
-
QTBUG-28103 Remove unneeded ICU libs
- Closed