psi-im / iris

XMPP network library
GNU Lesser General Public License v2.1
50 stars 25 forks source link

Unable to configure on Ubuntu 16.04 x86 #54

Closed eugeene closed 6 years ago

eugeene commented 6 years ago

Hello, I am having issues compiling your library.

I am using the standard combo of:

./configure make

The error I get says:

In file included from xmpp-im/xmpp_discoinfotask.cpp:29:0: xmpp-im/xmpp_client.h:31:1: error: expected constructor, destructor, or type conversion before ‘class’ class QString;

Also, I try switching QT4 to QT5. When using QT4, the ./configure command runs okay. But when I switch to QT5, the ./configure halts with error:

Configuring Iris ...
Verifying Qt build environment ... ok
Checking for Qt >= 4.2 ... yes
Checking for LibIDN ... yes
Checking for QCA >= 2.0 ... no

Error: need QCA >= 2.0!

Which is weird because I have the QCA dev libs installed in version 2.1.1

Can anyone help?

Ri0n commented 6 years ago

Since qca is also compiled with Qt, you need a version compiled with Qt5. Then it seems iris configure script is outdated. I remember I updated it. What version do you compile? passing --qtselect=5 to configure script may help in some cases.

tehnick commented 6 years ago

@eugeene What version of iris have you tried to build?

tehnick commented 6 years ago

@eugeene Have in mind that build of iris library from master branch in Ubuntu 14.04 is not officially supported, because there are too old versions of system libraries and compiler there.

eugeene commented 6 years ago

--qtselect=5 passed to ./configure makes the error above (missing QCA >= 2.0) Even though the 2.1.1 version is installed.

technick: I tried all the 'main' git branches, all with the same error (I think...).

Also - I described the wrong ubuntu version. I am trying to compile it on Ubuntu 16.04 server in VirtualBox, not 14.04. We have an old 32bit. software that is using IRIS library, so I just wanted to try compile it straight on a 32bit system.

It is not a big deal. If it runs on 64bit recent systems, from our company perspective this is not my issue. Ill tell our developers, we should be making 64bit executables in 2018 ;)

Than you for your time!

tehnick commented 6 years ago

@eugeene Build in 32-bit Ubuntu 16.04 is supported and should work fine. See our official PPA for Psi+ for example. So let's solve your build issues.

tehnick commented 6 years ago

@eugeene First of all check if you have installed all build dependencies:

sudo apt install -V libidn11-dev libminizip-dev libqca-qt5-2-dev libsm-dev libssl-dev libxss-dev zlib1g-dev

Unfortunately ./configure script generated by qconf tool may show not very informative messages, but there is --verbose command-line option which improve situation a bit. So if output of ./configure script in your system does not look like this:

$ ./configure --qtselect=5
Configuring Iris ...
Verifying Qt build environment ... ok
Checking for Qt >= 4.2 ... yes
Checking for LibIDN ... yes
Checking for QCA >= 2.0 ... yes
Checking for zlib ... yes
Checking for QJDns ... Disabled for Qt5 and above

Good, your configure finished.  Now run /usr/bin/make.

try to launch:

./configure --qtselect=5 --verbose

and look for details.

Also the build using of cmake configuration system is supported. You may try it and look if it works better for you:

mkdir builddir
$ cd builddir
$ cmake ..

Output should look like this:

-- The C compiler identification is GNU 8.2.0
-- The CXX compiler identification is GNU 8.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Qca: /usr/lib/x86_64-linux-gnu/libqca-qt5.so  
-- Found IDN: /usr/lib/x86_64-linux-gnu/libidn.so  
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/iris__tmp/builddir
Ri0n commented 6 years ago

Unfortunately I don't have Ubuntu 14.04 now. but on 18.04 compilation went fine with configure+make. And yes probably cmake may solve this problem. Also I regenerated configure script once again but there are no significant changes for linux based systems.

eugeene commented 6 years ago

Yes, I can compile the library on my main machine - 18.04 64bit. But in my VM with 16.04 32bit, I still get errors :/ Weird....

Ri0n commented 6 years ago

I'll try 16.04 later today. We still support it.

eugeene commented 6 years ago

Just for info:

reinstalled my VM, and now:

even with QT5, I do not get the "Need QCA >= 2.0" error anymore (wtf...?).

when compiling with classic ./configure and make, I still get:

In file included from xmpp-im/xmpp_discoinfotask.cpp:29:0:
xmpp-im/xmpp_client.h:31:1: error: expected constructor, destructor, or type conversion before ‘class’
class QString;
^
Makefile:845: recipe for target '.obj/xmpp_discoinfotask.o' failed
make[2]: [.obj/xmpp_discoinfotask.o] Error 1
make[2]: Leaving directory '/home/martinez/iris/src/xmpp'
Makefile:62: recipe for target 'sub-xmpp-make_default' failed
make[1]:
[sub-xmpp-make_default] Error 2
make[1]: Leaving directory '/home/martinez/iris/src'
Makefile:39: recipe for target 'sub-src-make_default' failed

when using tehnick's cmake method, compilation is successful.

So thanks a lot, friends ;)