2

Cross-compiled qt5 for Windows in MXE on Ubuntu 15.04:

make qt5

Then cloned the KDSoap repository and tried to cross-compile it:

cmake -DCMAKE_TOOLCHAIN_FILE=/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/share/cmake/mxe-conf.cmake /data/hd1/repositories/KDSoap

And then there are linker problems after make:

/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qregularexpression.o):qregularexpression.cpp:(.text+0x317): undefined reference to `pcre16_exec'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qregularexpression.o):qregularexpression.cpp:(.text+0x38f): undefined reference to `pcre16_jit_stack_alloc'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qregularexpression.o):qregularexpression.cpp:(.text+0x3fc): undefined reference to `pcre16_exec'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qregularexpression.o):qregularexpression.cpp:(.text+0x72e): undefined reference to `pcre16_free'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qbytearray.o):qbytearray.cpp:(.text+0x619): undefined reference to `uncompress'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qbytearray.o):qbytearray.cpp:(.text+0x127e): undefined reference to `compress2'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qeventdispatcher_win.o):qeventdispatcher_win.cpp:(.text+0xa9b): undefined reference to `_imp__WSAAsyncSelect@16'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qeventdispatcher_win.o):qeventdispatcher_win.cpp:(.text+0x1d85): undefined reference to `_imp__WSAAsyncSelect@16'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x1): undefined reference to `ASN1_INTEGER_get'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x11): undefined reference to `ASN1_STRING_data'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x41): undefined reference to `BIO_ctrl'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x51): undefined reference to `BIO_free'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x61): undefined reference to `BIO_new'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xe1): undefined reference to `CRYPTO_num_locks'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xf1): undefined reference to `CRYPTO_set_locking_callback'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x151): undefined reference to `ERR_error_string'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x161): undefined reference to `ERR_get_error'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x171): undefined reference to `ERR_free_strings'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x181): undefined reference to `EVP_des_ede3_cbc'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x411): undefined reference to `SSL_accept'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x421): undefined reference to `SSL_clear'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x431): undefined reference to `SSL_CIPHER_description'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x441): undefined reference to `SSL_CIPHER_get_bits'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qnativesocketengine_win.o):qnativesocketengine_win.cpp:(.text+0x1ef): undefined reference to `_imp__WSAHtons@12'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qnativesocketengine_win.o):qnativesocketengine_win.cpp:(.text+0x211): undefined reference to `_imp__WSAHtonl@12'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qnativesocketengine_win.o):qnativesocketengine_win.cpp:(.text+0x2cf): undefined reference to `_imp__WSAHtons@12'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qnativesocketengine_win.o):qnativesocketengine_win.cpp:(.text+0x370): undefined reference to `_imp__WSAStartup@8'
...
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0x369): undefined reference to `inflateInit_'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0x39e): undefined reference to `deflateInit_'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0x425): undefined reference to `inflate'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0x665): undefined reference to `inflateSetDictionary'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0xdaa): undefined reference to `deflateEnd'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0xdb8): undefined reference to `deflateEnd'
/data/hd1/repositories/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Network.a(qspdyprotocolhandler.o):qspdyprotocolhandler.cpp:(.text+0x1ac3): undefined reference to `deflate'

These are from pcre, crypto, openssl, zlib and something else.

I've tried to add a -lpcre to the CMakeFiles/kdsoap.dir/linklibs.rsp linker command. And rerun the link manually (in src/KDSoapClient for example):

/data/hd1/repositories/mxe/usr/bin/i686-w64-mingw32.static-g++   -O3 -DNDEBUG  -shared -o ../../bin/libkdsoap.dll -Wl,--out-implib,../../lib/libkdsoap.dll.a -Wl,--major-image-version,1,--minor-image-version,4 -Wl,--whole-archive CMakeFiles/kdsoap.dir/objects.a -Wl,--no-whole-archive @CMakeFiles/kdsoap.dir/linklibs.rsp

But the pcre-related link errors aren't gone.

What can be done to investigate more? Or there is a different procedure to cross-compile Qt-based code?

Velkan
  • 7,067
  • 6
  • 43
  • 87

2 Answers2

0

Just try to add -lpcre16 to the linker command.

Mich
  • 26
  • 1
  • 4
0

It worked for me in CMakeLists.txt:

target_link_libraries(worker iphlpapi ssl crypto crypt32)