Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Statically compiling with qt/qml for a truly standalone app #174

Open
amlwwalker opened this issue Apr 19, 2016 · 9 comments
Open

Statically compiling with qt/qml for a truly standalone app #174

amlwwalker opened this issue Apr 19, 2016 · 9 comments

Comments

@amlwwalker
Copy link

I have made my app and now I want to run it on another device. My development machine is OSX El Capitan and the test machine is OSX Yosemite.

Using otool -L I can see the libraries that it is dynamically linking to:

    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    /usr/local/opt/qt5/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.5.0, current version 5.5.1)
    /usr/local/opt/qt5/lib/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.5.0, current version 5.5.1)
    /usr/local/opt/qt5/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.5.0, current version 5.5.1)
    /usr/local/opt/qt5/lib/QtQml.framework/Versions/5/QtQml (compatibility version 5.5.0, current version 5.5.1)
    /usr/local/opt/qt5/lib/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.5.0, current version 5.5.1)
    /usr/local/opt/qt5/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.5.0, current version 5.5.1)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1258.1.0)
    /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57337.40.85)

When I run: go build --ldflags '-extldflags "-static"'
I get:

/usr/local/go/pkg/tool/darwin_amd64/link: running clang++ failed: exit status 1
ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Is there another way i can do this?

@immesys
Copy link

immesys commented Apr 19, 2016

I am very interested in how to statically link everything too, but have not had much success in my limited experiments. I hope someone chimes in

@neclepsio
Copy link

I hope someone will post a solution that works in Windows too...
Il 19 apr 2016 10:30 PM, "Michael Andersen" notifications@github.com ha
scritto:

I am very interested in how to statically link everything too, but have
not had much success in my limited experiments. I hope someone chimes in


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#174 (comment)

@amlwwalker
Copy link
Author

@immesys @neclepsio Did you guys try the above build flags? If you aren't using OSX and have GCC installed then that flag should build the static type for you. My issue I think is because OSX has the Clang "imposter" instead of actual GCC, and Clang doesn't support that library.

@emersion
Copy link

With GCC, I'm still getting:

$ go build --ldflags '-extldflags "-static"'
# github.com/go-qml/qml/examples/controls/basiclayouts
/usr/lib/go/pkg/tool/linux_amd64/link: running g++ failed: exit status 1
/usr/bin/ld: cannot find -lQt5Widgets
/usr/bin/ld: cannot find -lQt5Quick
/usr/bin/ld: cannot find -lQt5Gui
/usr/bin/ld: cannot find -lQt5Qml
/usr/bin/ld: cannot find -lQt5Network
/usr/bin/ld: cannot find -lQt5Core
collect2: error: ld returned 1 exit status

Seems that QT needs to be compiled statically. Tried to do it but the qtquickcontrols module is skipped and I get:

$ go build --ldflags '-extldflags "-static -L/home/simon/projects/qt5/lib"'
# github.com/go-qml/qml/examples/controls/basiclayouts
/usr/lib/go/pkg/tool/linux_amd64/link: running g++ failed: exit status 1
/usr/bin/ld: cannot find -lQt5Quick
/home/simon/projects/qt5/lib/libQt5Core.a(qfilesystemengine_unix.o): In function `QFileSystemEngine::resolveGroupName(unsigned int)':
qfilesystemengine_unix.cpp:(.text+0x79d): warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/simon/projects/qt5/lib/libQt5Widgets.a(qfiledialog.o): In function `qt_tildeExpansion(QString const&, bool*)':
qfiledialog.cpp:(.text+0x7e4d): warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/simon/projects/qt5/lib/libQt5Core.a(qfilesystemengine_unix.o): In function `QFileSystemEngine::resolveUserName(unsigned int)':
qfilesystemengine_unix.cpp:(.text+0x465): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/simon/projects/qt5/lib/libQt5Network.a(qhostinfo_unix.o): In function `QHostInfoAgent::fromName(QString const&)':
qhostinfo_unix.cpp:(.text+0x47e): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: error: ld returned 1 exit status

@gen2brain
Copy link

gen2brain commented Jun 5, 2016

You need to have Qt statically compiled. I managed to build single static Qt/QML binary for Linux and Windows (i686-w64-mingw32) for my project here https://github.com/gen2brain/cbconvert . You can see build details in gui/make.bash . I also had to fiddle with pkgconfig files a lot.
And I needed this patch #163 to be able to also add qml modules to binary.

Windows binary is actually a full static binary, Linux binary is not fully static, it doesn't link to static libc and libGL, X libs etc. but it doesn't require Qt, and binary is more portable if you doesn't link libc statically.

@emersion
Copy link

@gen2brain Thanks for your answer! I compiled QT statically, but when I try to build my app I get:

# github.com/ProtonMail/Desktop-Import/frontend
/usr/lib/go/pkg/tool/linux_amd64/link: running g++ failed: exit status 1
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qfontengine.o): In function `QFontEngine::supportsScript(QChar::Script) const':
qfontengine.cpp:(.text+0x3dc8): undefined reference to `hb_ot_tags_from_script'
qfontengine.cpp:(.text+0x3ddc): undefined reference to `hb_ot_layout_table_find_script'
qfontengine.cpp:(.text+0x3f20): undefined reference to `hb_ot_layout_table_find_script'
qfontengine.cpp:(.text+0x3f4e): undefined reference to `hb_ot_layout_table_find_script'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qtextengine.o): In function `QTextEngine::shapeTextWithHarfbuzzNG(QScriptItem const&, unsigned short const*, int, QFontEngine*, QVector<unsigned int> const&, bool, bool) const':
qtextengine.cpp:(.text+0x347a): undefined reference to `hb_buffer_create'
qtextengine.cpp:(.text+0x3492): undefined reference to `hb_buffer_set_unicode_funcs'
qtextengine.cpp:(.text+0x349d): undefined reference to `hb_buffer_pre_allocate'
qtextengine.cpp:(.text+0x34a5): undefined reference to `hb_buffer_allocation_successful'
qtextengine.cpp:(.text+0x3645): undefined reference to `hb_buffer_clear_contents'
qtextengine.cpp:(.text+0x366e): undefined reference to `hb_buffer_add_utf16'
qtextengine.cpp:(.text+0x367e): undefined reference to `hb_buffer_set_segment_properties'
qtextengine.cpp:(.text+0x3686): undefined reference to `hb_buffer_guess_segment_properties'
qtextengine.cpp:(.text+0x36a0): undefined reference to `hb_buffer_set_flags'
qtextengine.cpp:(.text+0x3797): undefined reference to `hb_shape_full'
qtextengine.cpp:(.text+0x37c6): undefined reference to `hb_buffer_get_length'
qtextengine.cpp:(.text+0x38d0): undefined reference to `hb_buffer_get_glyph_infos'
qtextengine.cpp:(.text+0x38df): undefined reference to `hb_buffer_get_glyph_positions'
qtextengine.cpp:(.text+0x3cf9): undefined reference to `hb_buffer_destroy'
qtextengine.cpp:(.text+0x3ead): undefined reference to `hb_buffer_destroy'
qtextengine.cpp:(.text+0x3f4c): undefined reference to `hb_buffer_reverse'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `_hb_qt_font_get_glyph_h_kerning(hb_font_t*, void*, unsigned int, unsigned int, void*)':
qharfbuzzng.cpp:(.text+0x38e): undefined reference to `hb_font_get_user_data'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `_hb_qt_font_get_glyph_h_advance(hb_font_t*, void*, unsigned int, void*)':
qharfbuzzng.cpp:(.text+0x3f0): undefined reference to `hb_font_get_user_data'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `_hb_qt_reference_table(hb_face_t*, unsigned int, void*)':
qharfbuzzng.cpp:(.text+0x498): undefined reference to `hb_blob_create'
qharfbuzzng.cpp:(.text+0x4b1): undefined reference to `hb_blob_get_empty'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `(anonymous namespace)::Q_QGS_qt_ufuncs::innerFunction()::Holder::~Holder()':
qharfbuzzng.cpp:(.text+0x508): undefined reference to `hb_unicode_funcs_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `(anonymous namespace)::Q_QGS_qt_ffuncs::innerFunction()::Holder::~Holder()':
qharfbuzzng.cpp:(.text+0x538): undefined reference to `hb_font_funcs_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_get_unicode_funcs()':
qharfbuzzng.cpp:(.text+0xceb): undefined reference to `hb_unicode_funcs_create'
qharfbuzzng.cpp:(.text+0xd05): undefined reference to `hb_unicode_funcs_set_combining_class_func'
qharfbuzzng.cpp:(.text+0xd1c): undefined reference to `hb_unicode_funcs_set_eastasian_width_func'
qharfbuzzng.cpp:(.text+0xd33): undefined reference to `hb_unicode_funcs_set_general_category_func'
qharfbuzzng.cpp:(.text+0xd4a): undefined reference to `hb_unicode_funcs_set_mirroring_func'
qharfbuzzng.cpp:(.text+0xd61): undefined reference to `hb_unicode_funcs_set_script_func'
qharfbuzzng.cpp:(.text+0xd78): undefined reference to `hb_unicode_funcs_set_compose_func'
qharfbuzzng.cpp:(.text+0xd8f): undefined reference to `hb_unicode_funcs_set_decompose_func'
qharfbuzzng.cpp:(.text+0xda6): undefined reference to `hb_unicode_funcs_set_decompose_compatibility_func'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_font_get_use_design_metrics(hb_font_t*)':
qharfbuzzng.cpp:(.text+0xe1c): undefined reference to `hb_font_get_user_data'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_get_font_funcs()':
qharfbuzzng.cpp:(.text+0xe79): undefined reference to `hb_font_funcs_create'
qharfbuzzng.cpp:(.text+0xe93): undefined reference to `hb_font_funcs_set_glyph_func'
qharfbuzzng.cpp:(.text+0xeaa): undefined reference to `hb_font_funcs_set_glyph_h_advance_func'
qharfbuzzng.cpp:(.text+0xec1): undefined reference to `hb_font_funcs_set_glyph_v_advance_func'
qharfbuzzng.cpp:(.text+0xed8): undefined reference to `hb_font_funcs_set_glyph_h_origin_func'
qharfbuzzng.cpp:(.text+0xeef): undefined reference to `hb_font_funcs_set_glyph_v_origin_func'
qharfbuzzng.cpp:(.text+0xf06): undefined reference to `hb_font_funcs_set_glyph_h_kerning_func'
qharfbuzzng.cpp:(.text+0xf1d): undefined reference to `hb_font_funcs_set_glyph_v_kerning_func'
qharfbuzzng.cpp:(.text+0xf34): undefined reference to `hb_font_funcs_set_glyph_extents_func'
qharfbuzzng.cpp:(.text+0xf4b): undefined reference to `hb_font_funcs_set_glyph_contour_point_func'
qharfbuzzng.cpp:(.text+0xf62): undefined reference to `hb_font_funcs_set_glyph_name_func'
qharfbuzzng.cpp:(.text+0xf79): undefined reference to `hb_font_funcs_set_glyph_from_name_func'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_face_get_for_engine(QFontEngine*)':
qharfbuzzng.cpp:(.text+0x1004): undefined reference to `hb_face_create_for_tables'
qharfbuzzng.cpp:(.text+0x100f): undefined reference to `hb_face_is_immutable'
qharfbuzzng.cpp:(.text+0x1059): undefined reference to `hb_face_set_index'
qharfbuzzng.cpp:(.text+0x10e5): undefined reference to `hb_face_set_upem'
qharfbuzzng.cpp:(.text+0x1130): undefined reference to `hb_face_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_font_get_for_engine(QFontEngine*)':
qharfbuzzng.cpp:(.text+0x117b): undefined reference to `hb_font_create'
qharfbuzzng.cpp:(.text+0x1186): undefined reference to `hb_font_is_immutable'
qharfbuzzng.cpp:(.text+0x11e8): undefined reference to `hb_font_set_funcs'
qharfbuzzng.cpp:(.text+0x11fe): undefined reference to `hb_font_set_scale'
qharfbuzzng.cpp:(.text+0x120c): undefined reference to `hb_font_set_ppem'
qharfbuzzng.cpp:(.text+0x1251): undefined reference to `hb_font_funcs_create'
qharfbuzzng.cpp:(.text+0x126b): undefined reference to `hb_font_funcs_set_glyph_func'
qharfbuzzng.cpp:(.text+0x1282): undefined reference to `hb_font_funcs_set_glyph_h_advance_func'
qharfbuzzng.cpp:(.text+0x1299): undefined reference to `hb_font_funcs_set_glyph_v_advance_func'
qharfbuzzng.cpp:(.text+0x12b0): undefined reference to `hb_font_funcs_set_glyph_h_origin_func'
qharfbuzzng.cpp:(.text+0x12c7): undefined reference to `hb_font_funcs_set_glyph_v_origin_func'
qharfbuzzng.cpp:(.text+0x12de): undefined reference to `hb_font_funcs_set_glyph_h_kerning_func'
qharfbuzzng.cpp:(.text+0x12f5): undefined reference to `hb_font_funcs_set_glyph_v_kerning_func'
qharfbuzzng.cpp:(.text+0x130c): undefined reference to `hb_font_funcs_set_glyph_extents_func'
qharfbuzzng.cpp:(.text+0x1323): undefined reference to `hb_font_funcs_set_glyph_contour_point_func'
qharfbuzzng.cpp:(.text+0x133a): undefined reference to `hb_font_funcs_set_glyph_name_func'
qharfbuzzng.cpp:(.text+0x1351): undefined reference to `hb_font_funcs_set_glyph_from_name_func'
qharfbuzzng.cpp:(.text+0x138e): undefined reference to `hb_face_destroy'
qharfbuzzng.cpp:(.text+0x13d4): undefined reference to `hb_face_create_for_tables'
qharfbuzzng.cpp:(.text+0x13df): undefined reference to `hb_face_is_immutable'
qharfbuzzng.cpp:(.text+0x1425): undefined reference to `hb_face_set_index'
qharfbuzzng.cpp:(.text+0x1482): undefined reference to `hb_face_set_upem'
qharfbuzzng.cpp:(.text+0x14aa): undefined reference to `hb_font_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `_hb_qt_face_release(void*)':
qharfbuzzng.cpp:(.text+0x416): undefined reference to `hb_face_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `_hb_qt_font_release(void*)':
qharfbuzzng.cpp:(.text+0x4e6): undefined reference to `hb_font_destroy'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qharfbuzzng.o): In function `hb_qt_font_set_use_design_metrics(hb_font_t*, unsigned int)':
qharfbuzzng.cpp:(.text+0xe02): undefined reference to `hb_font_set_user_data'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qopenglfunctions.o): In function `QOpenGLFunctionsPrivate::QOpenGLFunctionsPrivate(QOpenGLContext*)':
qopenglfunctions.cpp:(.text+0x13e4): undefined reference to `glBindTexture'
qopenglfunctions.cpp:(.text+0x13ee): undefined reference to `glBlendFunc'
qopenglfunctions.cpp:(.text+0x13f9): undefined reference to `glClear'
qopenglfunctions.cpp:(.text+0x1404): undefined reference to `glClearColor'
qopenglfunctions.cpp:(.text+0x141a): undefined reference to `glClearStencil'
qopenglfunctions.cpp:(.text+0x1425): undefined reference to `glColorMask'
qopenglfunctions.cpp:(.text+0x1430): undefined reference to `glCopyTexImage2D'
qopenglfunctions.cpp:(.text+0x143b): undefined reference to `glCopyTexSubImage2D'
qopenglfunctions.cpp:(.text+0x1446): undefined reference to `glCullFace'
qopenglfunctions.cpp:(.text+0x1451): undefined reference to `glDeleteTextures'
qopenglfunctions.cpp:(.text+0x145c): undefined reference to `glDepthFunc'
qopenglfunctions.cpp:(.text+0x1467): undefined reference to `glDepthMask'
qopenglfunctions.cpp:(.text+0x147d): undefined reference to `glDisable'
qopenglfunctions.cpp:(.text+0x1488): undefined reference to `glDrawArrays'
qopenglfunctions.cpp:(.text+0x1493): undefined reference to `glDrawElements'
qopenglfunctions.cpp:(.text+0x14a1): undefined reference to `glEnable'
qopenglfunctions.cpp:(.text+0x14af): undefined reference to `glFinish'
qopenglfunctions.cpp:(.text+0x14bd): undefined reference to `glFlush'
qopenglfunctions.cpp:(.text+0x14cb): undefined reference to `glFrontFace'
qopenglfunctions.cpp:(.text+0x14d9): undefined reference to `glGenTextures'
qopenglfunctions.cpp:(.text+0x14e7): undefined reference to `glGetBooleanv'
qopenglfunctions.cpp:(.text+0x14f5): undefined reference to `glGetError'
qopenglfunctions.cpp:(.text+0x1503): undefined reference to `glGetFloatv'
qopenglfunctions.cpp:(.text+0x1511): undefined reference to `glGetIntegerv'
qopenglfunctions.cpp:(.text+0x151f): undefined reference to `glGetString'
qopenglfunctions.cpp:(.text+0x152d): undefined reference to `glGetTexParameterfv'
qopenglfunctions.cpp:(.text+0x153b): undefined reference to `glGetTexParameteriv'
qopenglfunctions.cpp:(.text+0x1549): undefined reference to `glHint'
qopenglfunctions.cpp:(.text+0x1557): undefined reference to `glIsEnabled'
qopenglfunctions.cpp:(.text+0x1565): undefined reference to `glIsTexture'
qopenglfunctions.cpp:(.text+0x1573): undefined reference to `glLineWidth'
qopenglfunctions.cpp:(.text+0x1581): undefined reference to `glPixelStorei'
qopenglfunctions.cpp:(.text+0x158f): undefined reference to `glPolygonOffset'
qopenglfunctions.cpp:(.text+0x159d): undefined reference to `glReadPixels'
qopenglfunctions.cpp:(.text+0x15ab): undefined reference to `glScissor'
qopenglfunctions.cpp:(.text+0x15b9): undefined reference to `glStencilFunc'
qopenglfunctions.cpp:(.text+0x15c7): undefined reference to `glStencilMask'
qopenglfunctions.cpp:(.text+0x15d5): undefined reference to `glStencilOp'
qopenglfunctions.cpp:(.text+0x15e3): undefined reference to `glTexImage2D'
qopenglfunctions.cpp:(.text+0x15f1): undefined reference to `glTexParameterf'
qopenglfunctions.cpp:(.text+0x15ff): undefined reference to `glTexParameterfv'
qopenglfunctions.cpp:(.text+0x160d): undefined reference to `glTexParameteri'
qopenglfunctions.cpp:(.text+0x161b): undefined reference to `glTexParameteriv'
qopenglfunctions.cpp:(.text+0x1629): undefined reference to `glTexSubImage2D'
qopenglfunctions.cpp:(.text+0x1637): undefined reference to `glViewport'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qopenglfunctions.o): In function `qopenglfTranslateDepthRangef(float, float)':
qopenglfunctions.cpp:(.text+0x49): undefined reference to `glDepthRange'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qopenglfunctions.o): In function `qopenglfTranslateClearDepthf(float)':
qopenglfunctions.cpp:(.text+0x55): undefined reference to `glClearDepth'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Gui.a(qopenglpaintengine.o): In function `QOpenGL2PaintEngineEx::beginNativePainting()':
qopenglpaintengine.cpp:(.text+0x1d00): undefined reference to `glMatrixMode'
qopenglpaintengine.cpp:(.text+0x1d05): undefined reference to `glLoadIdentity'
qopenglpaintengine.cpp:(.text+0x1d3e): undefined reference to `glOrtho'
qopenglpaintengine.cpp:(.text+0x1d48): undefined reference to `glMatrixMode'
qopenglpaintengine.cpp:(.text+0x1d50): undefined reference to `glLoadMatrixf'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlocale_icu.o): In function `QIcu::toUpper(QByteArray const&, QString const&, bool*)':
qlocale_icu.cpp:(.text+0xad): undefined reference to `u_strToUpper_57'
qlocale_icu.cpp:(.text+0x1d7): undefined reference to `u_strToUpper_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlocale_icu.o): In function `QIcu::toLower(QByteArray const&, QString const&, bool*)':
qlocale_icu.cpp:(.text+0x2ed): undefined reference to `u_strToLower_57'
qlocale_icu.cpp:(.text+0x417): undefined reference to `u_strToLower_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollatorPrivate::init()':
qcollator_icu.cpp:(.text+0x17): undefined reference to `ucol_close_57'
qcollator_icu.cpp:(.text+0x93): undefined reference to `ucol_open_57'
qcollator_icu.cpp:(.text+0x169): undefined reference to `ucol_setAttribute_57'
qcollator_icu.cpp:(.text+0x18e): undefined reference to `ucol_setAttribute_57'
qcollator_icu.cpp:(.text+0x1fa): undefined reference to `ucol_setAttribute_57'
qcollator_icu.cpp:(.text+0x266): undefined reference to `ucol_setAttribute_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollatorPrivate::cleanup()':
qcollator_icu.cpp:(.text+0x2ee): undefined reference to `ucol_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollator::compare(QChar const*, int, QChar const*, int) const':
qcollator_icu.cpp:(.text+0x32b): undefined reference to `ucol_strcoll_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollator::compare(QString const&, QString const&) const':
qcollator_icu.cpp:(.text+0x48b): undefined reference to `ucol_strcoll_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollator::compare(QStringRef const&, QStringRef const&) const':
qcollator_icu.cpp:(.text+0x62b): undefined reference to `ucol_strcoll_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qcollator_icu.o): In function `QCollator::sortKey(QString const&) const':
qcollator_icu.cpp:(.text+0x884): undefined reference to `ucol_getSortKey_57'
qcollator_icu.cpp:(.text+0x8e5): undefined reference to `ucol_getSortKey_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::~QIcuTimeZonePrivate()':
qtimezoneprivate_icu.cpp:(.text+0x23): undefined reference to `ucal_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::~QIcuTimeZonePrivate()':
qtimezoneprivate_icu.cpp:(.text+0x43): undefined reference to `ucal_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::isDaylightTime(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x84): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0xbb): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0xcb): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0xef): undefined reference to `ucal_inDaylightTime_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::hasDaylightTime() const':
qtimezoneprivate_icu.cpp:(.text+0x12a): undefined reference to `ucal_getDSTSavings_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::clone()':
qtimezoneprivate_icu.cpp:(.text+0x1a5): undefined reference to `ucal_clone_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::standardTimeOffset(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x220): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0x25d): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0x26d): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0x294): undefined reference to `ucal_get_57'
qtimezoneprivate_icu.cpp:(.text+0x2c7): undefined reference to `ucal_get_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::daylightTimeOffset(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x2f0): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0x32b): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0x341): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0x36c): undefined reference to `ucal_get_57'
qtimezoneprivate_icu.cpp:(.text+0x38c): undefined reference to `ucal_get_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::offsetFromUtc(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x3d4): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0x410): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0x420): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0x452): undefined reference to `ucal_get_57'
qtimezoneprivate_icu.cpp:(.text+0x484): undefined reference to `ucal_get_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `ucalTimeZoneDisplayName(void**, QTimeZone::TimeType, QTimeZone::NameType, QString const&)':
qtimezoneprivate_icu.cpp:(.text+0x554): undefined reference to `ucal_getTimeZoneDisplayName_57'
qtimezoneprivate_icu.cpp:(.text+0x6a4): undefined reference to `ucal_getTimeZoneDisplayName_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::abbreviation(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x7ea): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0x8db): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0x8eb): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0x907): undefined reference to `ucal_inDaylightTime_57'
qtimezoneprivate_icu.cpp:(.text+0x911): undefined reference to `ucal_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::data(long long) const':
qtimezoneprivate_icu.cpp:(.text+0x9df): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0xa78): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0xa8f): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0xac9): undefined reference to `ucal_get_57'
qtimezoneprivate_icu.cpp:(.text+0xafd): undefined reference to `ucal_get_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::displayName(QTimeZone::TimeType, QTimeZone::NameType, QLocale const&) const':
qtimezoneprivate_icu.cpp:(.text+0xc20): undefined reference to `ucal_clone_57'
qtimezoneprivate_icu.cpp:(.text+0xceb): undefined reference to `ucal_getDSTSavings_57'
qtimezoneprivate_icu.cpp:(.text+0xd2a): undefined reference to `ucal_setMillis_57'
qtimezoneprivate_icu.cpp:(.text+0xd4b): undefined reference to `ucal_close_57'
qtimezoneprivate_icu.cpp:(.text+0xda0): undefined reference to `ucal_get_57'
qtimezoneprivate_icu.cpp:(.text+0xddb): undefined reference to `ucal_get_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::systemTimeZoneId() const':
qtimezoneprivate_icu.cpp:(.text+0xea3): undefined reference to `ucal_getDefaultTimeZone_57'
qtimezoneprivate_icu.cpp:(.text+0xf72): undefined reference to `ucal_getDefaultTimeZone_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::QIcuTimeZonePrivate(QIcuTimeZonePrivate const&)':
qtimezoneprivate_icu.cpp:(.text+0x1005): undefined reference to `ucal_clone_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::init(QByteArray const&)':
qtimezoneprivate_icu.cpp:(.text+0x10e7): undefined reference to `ucal_open_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::QIcuTimeZonePrivate()':
qtimezoneprivate_icu.cpp:(.text+0x12ea): undefined reference to `ucal_getDefaultTimeZone_57'
qtimezoneprivate_icu.cpp:(.text+0x13f2): undefined reference to `ucal_getDefaultTimeZone_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `uenumToIdList(UEnumeration*)':
qtimezoneprivate_icu.cpp:(.text+0x18f4): undefined reference to `uenum_next_57'
qtimezoneprivate_icu.cpp:(.text+0x1da3): undefined reference to `uenum_next_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::availableTimeZoneIds() const':
qtimezoneprivate_icu.cpp:(.text+0x1edb): undefined reference to `ucal_openTimeZones_57'
qtimezoneprivate_icu.cpp:(.text+0x1ef8): undefined reference to `uenum_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::availableTimeZoneIds(QLocale::Country) const':
qtimezoneprivate_icu.cpp:(.text+0x1fc1): undefined reference to `ucal_openCountryTimeZones_57'
qtimezoneprivate_icu.cpp:(.text+0x1fde): undefined reference to `uenum_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::availableTimeZoneIds(int) const':
qtimezoneprivate_icu.cpp:(.text+0x20e8): undefined reference to `ucal_openTimeZoneIDEnumeration_57'
qtimezoneprivate_icu.cpp:(.text+0x2105): undefined reference to `uenum_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qtimezoneprivate_icu.o): In function `QIcuTimeZonePrivate::QIcuTimeZonePrivate(QByteArray const&)':
qtimezoneprivate_icu.cpp:(.text+0x21a7): undefined reference to `ucal_openTimeZones_57'
qtimezoneprivate_icu.cpp:(.text+0x21c6): undefined reference to `uenum_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `pcre16SafeExec(real_pcre16 const*, pcre16_extra const*, unsigned short const*, int, int, int, int*, int)':
qregularexpression.cpp:(.text+0x223): undefined reference to `pcre16_exec'
qregularexpression.cpp:(.text+0x28f): undefined reference to `pcre16_jit_stack_alloc'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::~QRegularExpressionPrivate()':
qregularexpression.cpp:(.text+0x493): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x4a6): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::cleanCompiledPattern()':
qregularexpression.cpp:(.text+0x5a3): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x5b6): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::getPatternInfo()':
qregularexpression.cpp:(.text+0x609): undefined reference to `pcre16_fullinfo'
qregularexpression.cpp:(.text+0x61b): undefined reference to `pcre16_fullinfo'
qregularexpression.cpp:(.text+0x669): undefined reference to `pcre16_fullinfo'
qregularexpression.cpp:(.text+0x763): undefined reference to `pcre16_config'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::compilePattern()':
qregularexpression.cpp:(.text+0x8e3): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x8f6): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x997): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::optimizePattern(QRegularExpressionPrivate::OptimizePatternOption)':
qregularexpression.cpp:(.text+0xa62): undefined reference to `pcre16_study'
qregularexpression.cpp:(.text+0xb7d): undefined reference to `pcre16_assign_jit_stack'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::captureIndexForName(QString const&) const':
qregularexpression.cpp:(.text+0xbfb): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::~QRegularExpression()':
qregularexpression.cpp:(.text+0xe37): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0xe46): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::operator=(QRegularExpression const&)':
qregularexpression.cpp:(.text+0xf29): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0xf38): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::setPattern(QString const&)':
qregularexpression.cpp:(.text+0x10cc): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x10dd): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::setPatternOptions(QFlags<QRegularExpression::PatternOption>)':
qregularexpression.cpp:(.text+0x1288): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x1299): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::captureCount() const':
qregularexpression.cpp:(.text+0x13db): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x13ee): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x1496): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::isValid() const':
qregularexpression.cpp:(.text+0x1563): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x1576): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x161e): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::errorString() const':
qregularexpression.cpp:(.text+0x1703): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x1716): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x17c4): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::patternErrorOffset() const':
qregularexpression.cpp:(.text+0x1893): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x18a6): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x194e): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::optimize() const':
qregularexpression.cpp:(.text+0x1a3b): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x1a4e): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x1af6): undefined reference to `pcre16_compile2'
qregularexpression.cpp:(.text+0x1b4f): undefined reference to `pcre16_study'
qregularexpression.cpp:(.text+0x1c61): undefined reference to `pcre16_assign_jit_stack'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::~QRegularExpressionMatch()':
qregularexpression.cpp:(.text+0x2010): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x201f): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::operator=(QRegularExpressionMatch const&)':
qregularexpression.cpp:(.text+0x21e4): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x21f5): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::captured(QString const&) const':
qregularexpression.cpp:(.text+0x2448): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::capturedRef(QString const&) const':
qregularexpression.cpp:(.text+0x2548): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::capturedStart(QString const&) const':
qregularexpression.cpp:(.text+0x2701): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::capturedLength(QString const&) const':
qregularexpression.cpp:(.text+0x27c5): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::capturedEnd(QString const&) const':
qregularexpression.cpp:(.text+0x28a1): undefined reference to `pcre16_get_stringnumber'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatchIterator::~QRegularExpressionMatchIterator()':
qregularexpression.cpp:(.text+0x29d5): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x29e4): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x2af2): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x2b03): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatchIterator::operator=(QRegularExpressionMatchIterator const&)':
qregularexpression.cpp:(.text+0x2cbd): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x2cce): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x2dec): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x2dfb): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `operator>>(QDataStream&, QRegularExpression&)':
qregularexpression.cpp:(.text+0x31b5): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x31c4): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x3306): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x3317): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionPrivate::doMatch(QString const&, int, int, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>, QRegularExpressionPrivate::CheckSubjectStringOption, QRegularExpressionMatchPrivate const*) const':
qregularexpression.cpp:(.text+0x49b5): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x49c4): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::match(QString const&, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>) const':
qregularexpression.cpp:(.text+0x4f5c): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x4f6f): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x5018): undefined reference to `pcre16_compile2'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::globalMatch(QString const&, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>) const':
qregularexpression.cpp:(.text+0x52ba): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x52c9): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::globalMatch(QStringRef const&, int, QRegularExpression::MatchType, QFlags<QRegularExpression::MatchOption>) const':
qregularexpression.cpp:(.text+0x554d): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x555c): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpression::namedCaptureGroups() const':
qregularexpression.cpp:(.text+0x56ec): undefined reference to `pcre16_fullinfo'
qregularexpression.cpp:(.text+0x5705): undefined reference to `pcre16_fullinfo'
qregularexpression.cpp:(.text+0x571e): undefined reference to `pcre16_fullinfo'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatch::QRegularExpressionMatch()':
qregularexpression.cpp:(.text+0x5dd4): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x5de3): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatchIterator::QRegularExpressionMatchIterator()':
qregularexpression.cpp:(.text+0x600d): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x601c): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x610c): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x611b): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QRegularExpressionMatchIterator::next()':
qregularexpression.cpp:(.text+0x6414): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x6425): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text+0x65db): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text+0x65ec): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `pcre16SafeExec(real_pcre16 const*, pcre16_extra const*, unsigned short const*, int, int, int, int*, int)':
qregularexpression.cpp:(.text+0x2ef): undefined reference to `pcre16_exec'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QThreadStorage<QPcreJitStackPointer*>::deleteData(void*)':
qregularexpression.cpp:(.text._ZN14QThreadStorageIP20QPcreJitStackPointerE10deleteDataEPv[_ZN14QThreadStorageIP20QPcreJitStackPointerE10deleteDataEPv]+0x12): undefined reference to `pcre16_jit_stack_free'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QExplicitlySharedDataPointer<QRegularExpressionPrivate>::~QExplicitlySharedDataPointer()':
qregularexpression.cpp:(.text._ZN28QExplicitlySharedDataPointerI25QRegularExpressionPrivateED2Ev[_ZN28QExplicitlySharedDataPointerI25QRegularExpressionPrivateED5Ev]+0x37): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text._ZN28QExplicitlySharedDataPointerI25QRegularExpressionPrivateED2Ev[_ZN28QExplicitlySharedDataPointerI25QRegularExpressionPrivateED5Ev]+0x46): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QSharedDataPointer<QRegularExpressionMatchPrivate>::~QSharedDataPointer()':
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateED2Ev[_ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateED5Ev]+0xa0): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateED2Ev[_ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateED5Ev]+0xaf): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QSharedDataPointer<QRegularExpressionMatchPrivate>::detach_helper()':
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateE13detach_helperEv[_ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateE13detach_helperEv]+0x138): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateE13detach_helperEv[_ZN18QSharedDataPointerI30QRegularExpressionMatchPrivateE13detach_helperEv]+0x147): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qregularexpression.o): In function `QSharedDataPointer<QRegularExpressionMatchIteratorPrivate>::detach_helper()':
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv[_ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv]+0xb0): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv[_ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv]+0xbf): undefined reference to `pcre16_free_study'
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv[_ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv]+0x1d3): undefined reference to `pcre16_free'
qregularexpression.cpp:(.text._ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv[_ZN18QSharedDataPointerI38QRegularExpressionMatchIteratorPrivateE13detach_helperEv]+0x1e2): undefined reference to `pcre16_free_study'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlibrary_unix.o): In function `qdlerror()':
qlibrary_unix.cpp:(.text+0xc): undefined reference to `dlerror'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlibrary_unix.o): In function `QLibraryPrivate::unload_sys()':
qlibrary_unix.cpp:(.text+0x103): undefined reference to `dlclose'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlibrary_unix.o): In function `QLibraryPrivate::resolve_sys(char const*)':
qlibrary_unix.cpp:(.text+0x328): undefined reference to `dlsym'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlibrary_unix.o): In function `QLibraryPrivate::load_sys()':
qlibrary_unix.cpp:(.text+0x103a): undefined reference to `dlopen'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qlibrary_unix.o): In function `qt_linux_find_symbol_sys(char const*)':
qlibrary_unix.cpp:(.text+0x306): undefined reference to `dlsym'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::mibEnum() const':
qicucodec.cpp:(.text+0x4c): undefined reference to `ucnv_compareNames_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `qTextCodecNameMatch(char const*, char const*)':
qicucodec.cpp:(.text+0xf5): undefined reference to `ucnv_compareNames_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::getConverter(QTextCodec::ConverterState*) const':
qicucodec.cpp:(.text+0x196): undefined reference to `ucnv_open_57'
qicucodec.cpp:(.text+0x1b0): undefined reference to `ucnv_setSubstChars_57'
qicucodec.cpp:(.text+0x1c7): undefined reference to `u_errorName_57'
qicucodec.cpp:(.text+0x34b): undefined reference to `ucnv_open_57'
qicucodec.cpp:(.text+0x376): undefined reference to `ucnv_setSubstChars_57'
qicucodec.cpp:(.text+0x391): undefined reference to `u_errorName_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::convertFromUnicode(QChar const*, int, QTextCodec::ConverterState*) const':
qicucodec.cpp:(.text+0x6a1): undefined reference to `ucnv_getMaxCharSize_57'
qicucodec.cpp:(.text+0x83e): undefined reference to `ucnv_fromUnicode_57'
qicucodec.cpp:(.text+0x853): undefined reference to `u_errorName_57'
qicucodec.cpp:(.text+0x9be): undefined reference to `ucnv_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::convertToUnicode(char const*, int, QTextCodec::ConverterState*) const':
qicucodec.cpp:(.text+0xad2): undefined reference to `ucnv_toUnicode_57'
qicucodec.cpp:(.text+0xb91): undefined reference to `u_errorName_57'
qicucodec.cpp:(.text+0xd10): undefined reference to `ucnv_close_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::codecForNameUnlocked(char const*)':
qicucodec.cpp:(.text+0x105d): undefined reference to `ucnv_getStandardName_57'
qicucodec.cpp:(.text+0x10b8): undefined reference to `ucnv_getStandardName_57'
qicucodec.cpp:(.text+0x11c8): undefined reference to `ucnv_compareNames_57'
qicucodec.cpp:(.text+0x1248): undefined reference to `ucnv_compareNames_57'
qicucodec.cpp:(.text+0x1b58): undefined reference to `ucnv_open_57'
qicucodec.cpp:(.text+0x1b69): undefined reference to `ucnv_close_57'
qicucodec.cpp:(.text+0x1c0a): undefined reference to `u_errorName_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::defaultCodecUnlocked()':
qicucodec.cpp:(.text+0x1d51): undefined reference to `ucnv_getDefaultName_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::availableCodecs()':
qicucodec.cpp:(.text+0x1e0e): undefined reference to `ucnv_countAvailable_57'
qicucodec.cpp:(.text+0x1e47): undefined reference to `ucnv_countAliases_57'
qicucodec.cpp:(.text+0x1e66): undefined reference to `ucnv_getAvailableName_57'
qicucodec.cpp:(.text+0x1e86): undefined reference to `ucnv_getStandardName_57'
qicucodec.cpp:(.text+0x1eb0): undefined reference to `ucnv_getStandardName_57'
qicucodec.cpp:(.text+0x1f5d): undefined reference to `ucnv_getAlias_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `QIcuCodec::aliases() const':
qicucodec.cpp:(.text+0x203e): undefined reference to `ucnv_countAliases_57'
qicucodec.cpp:(.text+0x2093): undefined reference to `ucnv_getAlias_57'
/home/simon/projects/qt-5.6.1/lib/../lib/libQt5Core.a(qicucodec.o): In function `qIcuCodecStateFree(QTextCodec::ConverterState*)':
qicucodec.cpp:(.text+0xa5): undefined reference to `ucnv_close_57'
collect2: error: ld returned 1 exit status

Any clues?

@gen2brain
Copy link

You need to add missing libs to LDFLAGS, -lqtharfbuzzng -lqtpcre -licuuc , probably more. It will be either -lpcre or -lqtpcre, depends how you built Qt, with system libs or with bundled libs.

You can modify pkgconfig files that Qt installed, what you need will probably be in Libs.private: , since this will not be fully static build you need to move some libs from Libs.private to Libs.

I never did a full static build on Linux because of libGL but on Windows/mingw you can link to static -lopengl32 .

@emersion
Copy link

emersion commented Jun 15, 2016

The problem is that when I do that, I manage to compile but I get this error at runtime:

simon@kurisu ~/g/s/g/P/D/frontend (master)> go build --ldflags '-extldflags "-L/home/simon/projects/qt-5.6.1/lib -l qtpcre -l poly2tri -lxcb-static -l qtharfbuzzng -l GL -l icuuc -l icuio -l icui18n -Wl,--no-as-needed -ldl"'
simon@kurisu ~/g/s/g/P/D/frontend (master)> env QT_DEBUG_PLUGINS=1 ./frontend 
2016/06/13 19:49:18 .:0: QFactoryLoader::QFactoryLoader() ignoring "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3" since plugins are disabled in static builds
2016/06/13 19:49:18 .:0: This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Reinstalling the application may fix this problem.
SIGABRT: abort
PC=0x7f85aa7fc295 m=0
signal arrived during cgo execution
goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x7d9df0, 0xc82004be10, 0x0)
    /usr/lib/go/src/runtime/cgocall.go:123 +0x11b fp=0xc82004bde8 sp=0xc82004bdb8
gopkg.in/qml%2ev1._Cfunc_newGuiApplication()
    ??:0 +0x36 fp=0xc82004be10 sp=0xc82004bde8
gopkg.in/qml%2ev1.Run(0xc82000b240, 0x0, 0x0)
    /home/simon/go/src/gopkg.in/qml.v1/bridge.go:55 +0x10f fp=0xc82004be68 sp=0xc82004be10
main.main()
    /home/simon/go/src/github.com/ProtonMail/Desktop-Import/frontend/main.go:52 +0x2d3 fp=0xc82004bf50 sp=0xc82004be68
runtime.main()
    /usr/lib/go/src/runtime/proc.go:188 +0x2b0 fp=0xc82004bfa0 sp=0xc82004bf50
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1998 +0x1 fp=0xc82004bfa8 sp=0xc82004bfa0
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:1998 +0x1
rax    0x0
rbx    0x7ffc69a64030
rcx    0x7f85aa7fc295
rdx    0x6
rdi    0x359b
rsi    0x359b
rbp    0x407b270
rsp    0x7ffc69a63cd8
r8     0x211f1e0
r9     0x8
r10    0x8
r11    0x202
r12    0x7ffc69a63ff0
r13    0x18
r14    0x7ffc69a64040
r15    0x7ffc69a64000
rip    0x7f85aa7fc295
rflags 0x202
cs     0x33
fs     0x0
gs     0x0
simon@kurisu ~/g/s/g/P/D/frontend (master) [2]> ldd frontend 
    linux-vdso.so.1 (0x00007fffa295d000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f7006012000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f7005df5000)
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f7005bf1000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f7005980000)
    libicuuc.so.57 => /usr/lib/libicuuc.so.57 (0x00007f70055d8000)
    libicuio.so.57 => /usr/lib/libicuio.so.57 (0x00007f70053ca000)
    libicui18n.so.57 => /usr/lib/libicui18n.so.57 (0x00007f7004f50000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007f7004c4c000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f7004a36000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007f7004695000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7006399000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f7004469000)
    libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007f7004266000)
    libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007f7004063000)
    libxcb-randr.so.0 => /usr/lib/libxcb-randr.so.0 (0x00007f7003e53000)
    libxcb-xfixes.so.0 => /usr/lib/libxcb-xfixes.so.0 (0x00007f7003c4b000)
    libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007f7003a3d000)
    libxcb-shape.so.0 => /usr/lib/libxcb-shape.so.0 (0x00007f7003839000)
    libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007f7003632000)
    libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007f700342f000)
    libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f7003201000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f7002fef000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f7002dec000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f7002be6000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f70029e4000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f70026a2000)
    libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f7002486000)
    libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007f7002281000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f7002058000)
    libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f7001e52000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f7001c43000)
    libicudata.so.57 => /usr/lib/libicudata.so.57 (0x00007f70001c7000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f6ffffc3000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f6fffdbd000)

@gen2brain
Copy link

Ok, you need to modify cpp/modules.cpp, I am not sure now what I added there, here is the whole file:

#include <QtCore/QtPlugin>
#ifndef _WIN32
Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
Q_IMPORT_PLUGIN(QXcbGlxIntegrationPlugin)
Q_IMPORT_PLUGIN(QEvdevKeyboardPlugin)
Q_IMPORT_PLUGIN(QEvdevMousePlugin)
#else
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Q_IMPORT_PLUGIN(QtQuick2DialogsPrivatePlugin)
Q_IMPORT_PLUGIN(QmlFolderListModelPlugin)
#endif
Q_IMPORT_PLUGIN(QtQuick2Plugin)
Q_IMPORT_PLUGIN(QtQuickControlsPlugin)
Q_IMPORT_PLUGIN(QtQuick2DialogsPlugin)
Q_IMPORT_PLUGIN(QtQuickLayoutsPlugin)
Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)
Q_IMPORT_PLUGIN(QmlSettingsPlugin)
Q_IMPORT_PLUGIN(QtQuick2PrivateWidgetsPlugin)

And to link them check what I did here https://github.com/gen2brain/cbconvert/blob/master/gui/make.bash#L15

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants