Hi James!
Thx for the quick response!
1)
We did not build and test with our own version of Qt. We have tested on SuSE Enterprise Linux 15, but we use the version of Qt from the Qt Company to test and certify with.
For me it´s not really clear:
You are using the Qt from the Company (and not the one shipped with SUSE distribution) but did not build it?
Can you please explain in detail what you did?
2)
On my system the LD_LIBRARY_PATH is not defined, and there is just one qt installation. So 'ldd' shows that the '/usr/lib64/libQt5Core.so.5' ist used.
2a) /usr/lib64/libEsriRuntimeQt.a
Using nm -gC /usr/lib64/libEsriRuntimeQt.a | grep delete i get:
@V00.6.0:
...
0000000000000110 T Esri::ArcGISRuntime::FeatureTable::deleteFeaturesCompleted(QUuid, bool)
U operator delete(void*)
U operator delete(void*)
U operator delete(void*)
U operator delete(void*)
U operator delete(void*)
U operator delete(void*)
0000000000000200 T Esri::ArcGISRuntime::PortalUser::deleteFolderCompleted(bool)
...
@V00.7.0:
...
0000000000000110 T Esri::ArcGISRuntime::FeatureTable::deleteFeaturesCompleted(QUuid, bool)
U operator delete(void*, unsigned long)
U operator delete(void*, unsigned long)
U operator delete(void*, unsigned long)
U operator delete(void*, unsigned long)
U operator delete(void*, unsigned long)
0000000000000200 T Esri::ArcGISRuntime::PortalUser::deleteFolderCompleted(bool)
...
So, the undefined symbol for delete(void, unsigned long) is introduced with V100.7.0. - already known 🙂
2b) /usr/lib64/libQt5Core.so.5
ctc@CTCAP15:~/TDS/TDS-build> objdump -TC /usr/lib64/libQt5Core.so.5 | grep delete
0000000000000000 DF *UND* 0000000000000000 CXXABI_1.3.9 operator delete[](void*, unsigned long)
0000000000000000 DF *UND* 0000000000000000 CXXABI_1.3.9 operator delete(void*, unsigned long)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 operator delete[](void*)
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 pthread_key_delete
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 operator delete(void*)
0000000000000000 DF *UND* 0000000000000000 GLIBCXX_3.4 operator delete(void*, std::nothrow_t const&)
00000000002c9f90 g DF .text 0000000000000182 Qt_5.13.1_PRIVATE_API QObjectPrivate::deleteChildren()
00000000002ca120 g DF .text 0000000000000049 Qt_5 QObject::deleteLater()
2c) /usr/lib64/libstdc++.so.
objdump -TC /usr/lib64/libstdc++.so.6 | grep delete
0000000000000000 w D *UND* 0000000000000000 transaction clone for operator delete(void*)
0000000000000000 w D *UND* 0000000000000000 pthread_key_delete
000000000009b1e0 g DF .text 000000000000000c CXXABI_1.3 __cxa_vec_delete
0000000000098760 g DF .text 0000000000000005 GLIBCXX_3.4 operator delete(void*)
000000000009a6c0 g DF .text 0000000000000008 CXXABI_1.3.11 operator delete[](void*, unsigned long, std::align_val_t)
0000000000098770 g DF .text 0000000000000005 CXXABI_1.3.9 operator delete(void*, unsigned long)
0000000000098790 g DF .text 0000000000000005 GLIBCXX_3.4 operator delete[](void*)
000000000009ab50 g DF .text 0000000000000021 CXXABI_1.3.6 __cxa_deleted_virtual
000000000009a670 g DF .text 0000000000000005 CXXABI_1.3.11 operator delete(void*, std::align_val_t)
000000000009a6a0 g DF .text 0000000000000005 CXXABI_1.3.11 operator delete[](void*, std::align_val_t)
00000000000987a0 g DF .text 0000000000000005 CXXABI_1.3.9 operator delete[](void*, unsigned long)
000000000009a680 g DF .text 0000000000000005 CXXABI_1.3.11 operator delete(void*, std::align_val_t, std::nothrow_t const&)
000000000009a6b0 g DF .text 0000000000000005 CXXABI_1.3.11 operator delete[](void*, std::align_val_t, std::nothrow_t const&)
000000000009a690 g DF .text 0000000000000008 CXXABI_1.3.11 operator delete(void*, unsigned long, std::align_val_t)
000000000009b190 g DF .text 0000000000000046 CXXABI_1.3 __cxa_vec_delete2
000000000009b1f0 g DF .text 0000000000000066 CXXABI_1.3 __cxa_vec_delete3
00000000000c3600 g DF .text 0000000000000029 GLIBCXX_3.4.22 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())
00000000000987b0 g DF .text 0000000000000005 GLIBCXX_3.4 operator delete[](void*, std::nothrow_t const&)
0000000000098780 g DF .text 0000000000000005 GLIBCXX_3.4 operator delete(void*, std::nothrow_t const&)
So, requested symbol is defined in /usr/lib64/libstdc++.so.6, but with CXXABI_1.3.9 and not GLIBCXX_3.4..
My /usr/lib64/libstdc++.so.6 is owned by libstdc++6-8.2.1+r264010-lp151.1.33.x86_64, which is currently the newest for my system:
rpm -qi libstdc++6-8.2.1+r264010-lp151.1.33.x86_64
Name : libstdc++6
Version : 8.2.1+r264010
Release : lp151.1.33
Architecture: x86_64
Install Date: Mo 27 Mai 2019 17:33:41 CEST
Group : System/Libraries
Size : 1602680
License : GPL-3.0-with-GCC-exception
Signature : RSA/SHA256, Sa 04 Mai 2019 08:45:27 CEST, Key ID b88b2fd43dbdc284
Source RPM : gcc8-8.2.1+r264010-lp151.1.33.src.rpm
Build Date : Sa 04 Mai 2019 08:26:15 CEST
Build Host : build81
Relocations : (not relocatable)
Packager : https://bugs.opensuse.org
Vendor : openSUSE
URL : http://gcc.gnu.org/
Summary : The standard C++ shared library
Description :
The standard C++ library, needed for dynamically linked C++ programs.
Distribution: openSUSE Leap 15.1
But the undefined symbol is at qt: `operator delete(void*, unsigned long)@Qt_5'
May i please you to post which gcc you are using?
And maybe run the upper commands to know where the symbol is defined on your system?
Thx