2

Ubuntu 15.04 の MXE で Windows 用にクロスコンパイルされた qt5:

make qt5

次に、KDSoap リポジトリのクローンを作成し、クロスコンパイルを試みました。

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

そして、後にリンカーの問題があります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'

これらはpcrecryptoopensslzlibおよびその他のものです。

リンカー コマンドに a-lpcreを追加しようとしました。CMakeFiles/kdsoap.dir/linklibs.rspそして、リンクを手動で再実行します (src/KDSoapClientたとえば):

/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

しかし、pcre関連のリンク エラーはなくなっていません。

さらに調査するにはどうすればよいでしょうか。または、Qt ベースのコードをクロスコンパイルする別の手順はありますか?

4

2 に答える 2

0

-lpcre16リンカーコマンドに追加してみてください。

于 2016-04-19T08:48:24.327 に答える