[SOLVED] IDE cannot be built using QT6 with an FpcUpDeluxe install; Linker error lazarus / 1-Linux ---------------------------------------------------------------------- dsiders · 2024-12-21 00:31 Using: Operating System: openSUSE Tumbleweed 20241218KDE Plasma Version: 6.2.4KDE Frameworks Version: 6.9.0Qt Version: 6.8.1Graphics Platform: X11Lazarus 4.99 (rev main_4_99-652-gd9c3191562) FPC 3.2.2 x86_64-linux-gtk2 installed using FpcUpDeluxe 2.4.0e (today) I cannot rebuild the IDE for the QT6 widgetset. GTK2 works fine. Previous installs using FpcUpDeluxe have worked since last March. I notice during install with FpcUpDeluxe the log message about 'QT6 chicanery'. I also noticed the 2 file that have not been present in previous versionjs: libQt6Pas.so and libQt6Pas.so.6. make bigide error is: Code: Bash  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i (9015) Linking ../lazarus/usr/bin/ld: /lib64//libQt6Pas.so: undefined reference to `QString::isSimpleText() const@Qt_6/home/don/lazarus/lazarus/ide/lazarus.pp(170,1) Error: (9013) Error while linking/home/don/lazarus/lazarus/ide/lazarus.pp(170,1) Fatal: (10026) There were 1 errors compiling module, stoppingFatal: (1018) Compilation abortedError: /home/don/lazarus/fpc/bin/x86_64-linux/ppcx64 returned an error exitcodemake[2]: *** [Makefile:4399: lazarus] Error 1make[2]: Leaving directory '/home/don/lazarus/lazarus/ide'make[1]: *** [Makefile:4844: bigide] Error 2make[1]: Leaving directory '/home/don/lazarus/lazarus/ide'make: *** [Makefile:3133: idebig] Error 2  So it seems the provided libQt6Pas files aren't compatible with Qt 6.8.1. But I'm no Linux expert, so I'm most likely wrong. Any suggestions? ---------------------------------------------------------------------- zeljko · 2024-12-21 08:40 QString::isSimpleText() does not exist in Qt6 cbindings, also it does not exist in Qt6 library, so I guess that you have old sources to build libQt6Pas or mismatched sources of cbindings with Qt5. ---------------------------------------------------------------------- zeljko · 2024-12-21 08:44 Here you are: https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/40901 That function was in qt6 cbindings by mistake, but removed 8 months ago, so, you're using old bindings. Note: You can always build libQt6Pas from trunk lazarus, it never breaks backward compatibility. ---------------------------------------------------------------------- dsiders · 2024-12-21 17:26 Quote from: zeljko on December 21, 2024, 09:40:52 amQString::isSimpleText() does not exist in Qt6 cbindings, also it does not exist in Qt6 library, so I guess that you have old sources to build libQt6Pas or mismatched sources of cbindings with Qt5. No I do not. I have the Lazarus sources for 4.99 as mentioned in the original post. I checked. QString::isSimpleText() does not exist in the cpp source code. I can't, however. verify what is is in the mysterious libbQt6Pas.so files distributed in FpcUpDeluxe. ---------------------------------------------------------------------- dsiders · 2024-12-21 17:31 Quote from: zeljko on December 21, 2024, 09:44:38 amHere you are: https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/40901 That function was in qt6 cbindings by mistake, but removed 8 months ago, so, you're using old bindings. Note: You can always build libQt6Pas from trunk lazarus, it never breaks backward compatibility. I appreciate that is has been fized. Doesn't change the fact that FpcUpDeluxe has a linker error when building the IDE. Quote from: zeljko on December 21, 2024, 09:44:38 amNote: You can always build libQt6Pas from trunk lazarus, it never breaks backward compatibility. Um, no I can't. I looked at the readme. Not enough info there to accomplish the task. There is no script. So, no, I can't. And even if I could, there is no indication what needs to be done with the resulting output. I guess I' have to stop using FpcUpDeluxe if it's not reliable. Off to try install from source rpms. ---------------------------------------------------------------------- zeljko · 2024-12-21 18:33 Just tried to build lazarus via fpcupdeluxe and everything works fine. Fpcupdeluxe does not build any qt6pas library, it is on your system. Missing or wrong symbols mean that you have an old libQt6Pas on your system. ---------------------------------------------------------------------- dsiders · 2024-12-21 18:50 Quote from: zeljko on December 21, 2024, 07:33:07 pmJust tried to build lazarus via fpcupdeluxe and everything works fine. Fpcupdeluxe does not build any qt6pas library, it is on your system. Missing or wrong symbols mean that you have an old libQt6Pas on your system. I have a brand new install of OpenSUSE Tumblweed. I don't know how that would be possible. In fact, there is no libQt6Pas on Tumbleweed until you get the one in FpcUpDeluxe. This is the new user experience. And it sucks.  But hey, it works for you... ---------------------------------------------------------------------- dsiders · 2024-12-21 19:02 Quote from: dsiders on December 21, 2024, 07:50:26 pmI have a brand new install of OpenSUSE Tumblweed. I don't know how that would be possible. In fact, there is no libQt6Pas on Tumbleweed until you get the one in FpcUpDeluxe. THIS! It's not listed as a dependency anywhere., but you have to install libQt6Pas-devel from the OpenSUSE repos. ---------------------------------------------------------------------- zeljko · 2024-12-21 19:25 Quote from: dsiders on December 21, 2024, 07:50:26 pmQuote from: zeljko on December 21, 2024, 07:33:07 pmJust tried to build lazarus via fpcupdeluxe and everything works fine. Fpcupdeluxe does not build any qt6pas library, it is on your system. Missing or wrong symbols mean that you have an old libQt6Pas on your system. I have a brand new install of OpenSUSE Tumblweed. I don't know how that would be possible. In fact, there is no libQt6Pas on Tumbleweed until you get the one in FpcUpDeluxe. This is the new user experience. And it sucks.  But hey, it works for you... Yes, because I know that I need libQt6Pas if I want to build lazarus for qt6. ---------------------------------------------------------------------- dbannon · 2024-12-22 10:41 Quote from: dsiders on December 21, 2024, 08:02:59 pm... It's not listed as a dependency anywhere., but you have to install libQt6Pas-devel from the OpenSUSE repos. In all Linux except Arch based (?), if you will be linking against a library, at linking time, you need the -dev library package. Now, what is the -dev package ? In most cases, a few doc files that no one every reads and a symlink from .so to .so.x where x is the current (or desired) sub-release of that library.  Thus - Code: Bash  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i lrwxrwxrwx 1 root root      18 Apr 25  2024 /usr/lib/x86_64-linux- gnu/libQt6Pas.so -> libQt6Pas.so.6.2.8lrwxrwxrwx 1 root root      18 Apr 25  2024 /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6 -> libQt6Pas.so.6.2.8lrwxrwxrwx 1 root root      18 Apr 25  2024 /usr/lib/x86_64-linux-gnu/libQt6Pas.so.6.2 -> libQt6Pas.so.6.2.8-rw-r --r-- 1 root root 2928656 Apr 25  2024 /usr/lib/x86_64-linux- gnu/libQt6Pas.so.6.2.8 Note that only libQt6Pas.so.6.2.8 is a real file, the others are just symlinks to it. This allows, for example, a developer to have several versions of a library on his/her system and easy testing of an app with each. It also means that you can easily just add a symlink to a library rather than installing the -dev package ! Arch installs the symlink as part of the install of a library in most cases, probably sensible. Also note that FPC has code that looks for some library's symlink at run time !  Davo Edit : QuoteIt's not listed as a dependency anywhere.,I found 12 wiki pages that mention the need for libqt5-dev or libqt6-dev including - https://wiki.freepascal.org/Qt5_Interface https://wiki.freepascal.org/Qt6_Interface https://wiki.freepascal.org/Lazarus_3.0_release_notes https://wiki.freepascal.org/Installing_Lazarus_on_Linux https://wiki.freepascal.org/fpcupdeluxe ---------------------------------------------------------------------- dsiders · 2024-12-22 12:13 Quote from: dbannon on December 22, 2024, 11:41:23 amQuote from: dsiders on December 21, 2024, 08:02:59 pmIt's not listed as a dependency anywhere., but you have to install libQt6Pas-devel from the OpenSUSE repos. In all Linux except Arch based (?), if you will be linking against a library, at linking time, you need the -dev library package. Quote from: dbannon on December 22, 2024, 11:41:23 amQuoteIt's not listed as a dependency anywhere.,I found 12 wiki pages that mention the need for libqt5-dev or libqt6-dev including - https://wiki.freepascal.org/Qt5_Interface https://wiki.freepascal.org/Qt6_Interface https://wiki.freepascal.org/Lazarus_3.0_release_notes https://wiki.freepascal.org/Installing_Lazarus_on_Linux https://wiki.freepascal.org/fpcupdeluxeWell I installed my IDE using FpcUpDeluxe. I visited the page at https://wiki.freepascal.org/fpcupdeluxe. Nowhere on that page does it mention the dependency names for RPM based distros (they're different) or anything at all about QT6 dependencies. Compound that with the fact that FpcUpDeluxe drops broken .so files in the Lazarus directory (implying that they should somehow be used). The cherry on top is the fact that - even though I downloaded a QT- specific version of FpcUpDeluxe - it builds an IDE in GTK2. So you never really see that you're missing the dependency until you try to link against   QT6 when rebuilding the IDE. Then you can spend the weekend trying to figure out why the provided .so files do not work. That clusterfuck is not something that an absolute new user is going to endure. I did not pursue any other the other pages because they were not the mechanism I was using to install the IDE.