jimevins / glabels-qt

gLabels Label Designer (Qt/C++)
http://glabels.org
GNU General Public License v3.0
326 stars 90 forks source link

symbol lookup error: glabels-qt: undefined symbol: _ZdlPvm, version Qt_5 #170

Open AndKe opened 2 years ago

AndKe commented 2 years ago

Built, installed, got an error on attempt to run (Ubuntu)

build$ glabels-qt 
glabels-qt: symbol lookup error: glabels-qt: undefined symbol: _ZdlPvm, version Qt_5
sur5r commented 2 years ago

Which version of Ubuntu did this happen on? Is you system up to date w.r.t to that version? Do you have any backports installed? What's the output of cmake w.r.t detected versions?

AndKe commented 2 years ago

Just upgraded from Ubuntu 21.10 to 22.04 I guess what you ask is somewhere here:

$ cmake ..
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/lib/ccache/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/lib/ccache/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
fatal: not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
-- 
-- Project name ............ glabels-qt
-- Project version ......... 3.99-Unkonwn? (exported 2022-04-21)
-- Installation prefix ..... /usr/local
-- Source code location .... /home/andre/Downloads/glabels-qt/glabels
-- CMake version ........... 3.22.1
-- C++ Compiler ............ GNU /usr/lib/ccache/c++ 11.2.0
-- Qt version .............. 5.15.2
-- zlib (optional).......... 1.2.11
-- GNU Barcode (optional)... No.
-- qrencode (optional)...... 4.0.2
-- libzint (optional)....... No.
-- QtTest (optional)........ 5.15.2
-- 
-- Configuring done
-- Generating done
sur5r commented 2 years ago

I just did a build in a fresh 22.04 chroot and could not reproduce the error. But I saw you are using ccache. Please try building without or emptying your cache beforehand. While I would consider ccache robust, I'm not sure whether its cache is supposed to survive OS updates like that.

AndKe commented 2 years ago

I did a ccache -C - make clean, then rebuilt - no difference. there's another interesting thing... maybe: I am using QT Community edition with QT 5.12.2 (due to another project) Could that be the reason?

sur5r commented 2 years ago

So that's another Qt build, not the one shipped with Ubuntu? Possibly.

Could you try the workaround from https://stackoverflow.com/questions/53022608/application-crashes-with-symbol-zdlpvm-version-qt-5-not-defined-in-file-libqt?

Quoting from the answer:

I had the same issue with Qt 5.11.2 from KDE Neon. But no problem with the official Qt 5.11.2 SDK. If I add this flag to the project: QMAKE_CXXFLAGS += "-fno-sized-deallocation", eveything works again. I believe that if you compile your program as c++14 or above, the code will try to do a sized deallocation. Because compiling with -std=c++11 doesn't cause this issue.

Probably, Qt from KDE Neon was compiled as C++11.

AndKe commented 2 years ago

Gladly, but where do I put the QMAKE_CXXFLAGS += "-fno-sized-deallocation" ?

sur5r commented 2 years ago

Call cmake like this: CXXFLAGS="-fno-sized-deallocation" cmake

AndKe commented 2 years ago

Unfortunately - That did not make any difference. (and I did make clean and ccache -C too)

jowu598 commented 2 years ago

useless

sur5r commented 2 years ago

@AndKe What does ldd report for the resulting binary? Is it looking for Qt in the right place? Maybe you are building against one version of Qt and try to run it using the other.

AndKe commented 2 years ago

@sur5r , I am on vacation till 1August. And can't see how/if I managed to meke it work. I am using qt-community and have only 5.12.x installed. Using it for two other projects, and those compile/work fine. I am not sure whatever I ever got glabels-qt to compile, it's quite possible I am just using an appimage that I've found. I also use the old glabels (not Qt version) one reason for that was so simple at ctrl-p to print, less clicking :)