Qt 5.1.1 не могу собрать программу статически с внешней библиотекой exiv2



  • Цель собрать программу статически.
    В программе используеться libexv2 внешняя библиотека.
    Скачал Qt, он уже с MinGW в котором отключен pthreads благодаря чему этот вариант MinGW может компилировать сырцы Qt.
    В системе установлен Qt 5.1.1 с MinGW и QtCreator.
    для сборки Qt статически всё есть, собираю.
    Готово.
    Затем мне нужно собрать expat, zlib и наконец exiv2
    Собрать штатным MinGW не получаеться.
    Качаю отдельно ставлю (оказываеться разница практически в MSYS)
    Все библиотеки с горем пополам собрались.
    А теперь проблема, я добавил статический Qt, указал в качестве компилятора штатный без MSYS.
    Возникает проблема, кричит:
    @
    21:45:36: Running steps for project MK3DO...
    21:45:36: Configuration unchanged, skipping qmake step.
    21:45:36: Starting: "D:\Project\Qt\Tools\mingw48_32\bin\mingw32-make.exe"
    D:\Project\Qt-Static\qtbase\bin\qmake.exe -spec win32-g++ -o Makefile ..\MK3DO\MK3DO.pro
    D:/Project/Qt/Tools/mingw48_32/bin/mingw32-make -f Makefile.Release
    mingw32-make[1]: Entering directory 'D:/Project/Qt-Projects/build-MK3DO-Desktop_Qt_5_1_1_MinGW_32bit-Release'
    g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\MK3DO.exe release/main.o release/mainwindow.o release/settingsdialog.o release/mk3do_plugin_import.o release/moc_mainwindow.o release/moc_settingsdialog.o -lmingw32 -lqtmain d:/Project/MinGW/msys/1.0/local/lib/libexpat.a d:/Project/MinGW/msys/1.0/local/lib/libz.dll.a d:/Project/MinGW/msys/1.0/local/lib/libexiv2.a -LD:/Project/Qt-Static/qtbase/lib -lQt5Widgets -lQt5Sql -LD:/Project/Qt-Static/qtbase/plugins/platforms -lqwindows -lwinspool -lshlwapi -lQt5PlatformSupport -lQt5Gui -lQt5Core -lz -llibEGL -llibGLESv2 -lshell32 -lkernel32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -ladvapi32 -ld3d9 -ldxguid -ld3dcompiler D:/Project/Qt-Static/qtbase/lib/libtranslator_common.a D:/Project/Qt-Static/qtbase/lib/libtranslator_hlsl.a D:/Project/Qt-Static/qtbase/lib/libpreprocessor.a -lgdi32 -luser32
    release/main.o:main.cpp:(.text+0x21): undefined reference to _imp___ZN12QApplicationC1ERiPPci' release/main.o:main.cpp:(.text+0x41): undefined reference to_imp___ZN7QWidget4showEv'
    release/main.o:main.cpp:(.text+0x47): undefined reference to _imp___ZN12QApplication4execEv' release/main.o:main.cpp:(.text+0x5c): undefined reference to_imp___ZN12QApplicationD1Ev'
    release/main.o:main.cpp:(.text+0x6f): undefined reference to _imp___ZN12QApplicationD1Ev' d:/project/qt/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/bin/ld.exe: release/main.o: bad reloc address 0x13 in section.eh_frame'
    collect2.exe: error: ld returned 1 exit status
    Makefile.Release:86: recipe for target 'release\MK3DO.exe' failed
    mingw32-make[1]: *** [release\MK3DO.exe] Error 1
    mingw32-make[1]: Leaving directory 'D:/Project/Qt-Projects/build-MK3DO-Desktop_Qt_5_1_1_MinGW_32bit-Release'
    makefile:34: recipe for target 'release' failed
    mingw32-make: *** [release] Error 2
    21:45:50: The process "D:\Project\Qt\Tools\mingw48_32\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project MK3DO (kit: Static)
    When executing step 'Make'
    21:45:50: Elapsed time: 00:14.
    @
    В pro файле:
    @
    QT += core gui sql
    CONFIG += static

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = MK3DO
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp
    settingsdialog.cpp

    HEADERS += mainwindow.h
    settingsdialog.h

    FORMS += mainwindow.ui
    settingsdialog.ui

    INCLUDEPATH += $$quote(d:/Project/MinGW/msys/1.0/local/include)
    LIBS += $$quote(d:/Project/MinGW/msys/1.0/local/lib/libexpat.a)
    LIBS += $$quote(d:/Project/MinGW/msys/1.0/local/lib/libz.dll.a)
    LIBS += $$quote(d:/Project/MinGW/msys/1.0/local/lib/libexiv2.a)
    @

    Если указать в качестве компилятора отдельно устанволенный MinGW то:

    @
    вырезано
    d:/project/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: cannot find -lz
    d:/project/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: cannot find -ld3dcompiler
    вырезано
    @

    Помогите разобраться.
    Программа изначально написана на платформе Linux, там проблем не возникало.
    А на Windows трудности.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.