[X2Go-Dev] x2goclient-4.1.1.0 compile fails at link stage with undefined references
Mihai Moldovan
ionic at ionic.de
Tue Mar 20 02:59:43 CET 2018
* On 02/19/2018 07:12 AM, John Frankish wrote:
>>> On linux
>>> Which lib provides the directRDP function?
>>>
>> There is no library. That's all Linux-#ifdef'd code. But given that the
>> implementation section is referencing for instance the
>> SessionWidget::directRDP(bool, bool) signal, it should work.
>>
>> From the excerpt you've shown, I have no idea what you invoked and how so. I
>> also have no idea if the moc binary has been executed on relevant source files
>> and generated metaobjects code. If possible, please always paste *everything*,
>> not just the part that you may deem interesting.
>>
> Build log from "make V=1" attached.
There was a bug in the source code in the sense that it did connect two
unavailable signals on non-Linux platforms.
In your case, I observe that:
- You seem to be using a self-compiled version staged into /usr/local/.
- You have ANOTHER self-compiled version in /tmp/cloop/qt-4.x-dev which is
used as the mkspec location.
- Qt does not detect that you're using the linux-g++ mkspec which would make
x2goclient.pro add -D__linux__ to the compile flags. I am not sure why we
even have this, given that the compiler should set such a macro. From the
commit log, it looks like this is needed so that moc expands macros such as
Q_OS_LINUX, which is a known bug in Qt, c.f.,
https://bugreports.qt.io/browse/QTBUG-34593 and will probably never be fixed
for Qt 4.8 since it's EOL.
*Why* are you not using the Qt version as provided by your package manager? Why
are you rolling your own solution, if you are incapable of debugging and
handling such issues yourself?
The path /tmp/tcloop/qt-4.x-dev/usr/local/share/qt4/mkspecs/linux-g++ might not
even exist any longer. Who knows what compiler spec qmake falls back to.
I fixed the issue I found in x2goclient via
https://code.x2go.org/gitweb?p=x2goclient.git;a=commitdiff;h=1f383a9029ba1d1323c370c0deaaba379097c960
This likely won't help you, though, since the definitions as seen by your meta
object compiler (moc) and C++ compiler (g++) still won't match up.
Package maintainers normally go a great length to make sure that the packages
they build work correctly and handle bug reports. Subverting this by rolling
your own version is not as smart an idea as you might think it is.
Looking around, you seem to be using tinycorelinux, which stages non-core
software to /usr/local. That hints that it was installed there by a package
manager, but doesn't explain why qmake is trying to read spec files from
/tmp/tcloop/qt-4.x-dev. There's definitely something odd with your system or the
way these packages have been built.
Sorry, this is not a problem X2Go Client, but rather with your Qt libraries.
Mihai
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 898 bytes
Desc: OpenPGP digital signature
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20180320/5957acea/attachment.sig>
More information about the x2go-dev
mailing list