Static build for SQL plugin



  • [quote author="raven-worx" date="1380003684"]i'm not sure, but i t may be that you need to do this in your PRO file:
    LIBS += -LC:/postgresql-9.1.9/src/interfaces/libpq -llibpq[/quote]

    It gives:
    [code]c:/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibpq
    collect2.exe: error: ld returned 1 exit status
    Makefile.Release:82: recipe for target 'release\test.exe' failed
    mingw32-make[1]: *** [release\test.exe] Error 1
    mingw32-make[1]: Leaving directory 'C:/Users/mbnoimi/Desktop/build-test-Static_PG-Release'
    makefile:34: recipe for target 'release' failed
    mingw32-make: *** [release] Error 2
    01:59:01: The process "C:\mingw48_32\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project test (kit: Static PG)
    When executing step 'Make'
    01:59:01: Elapsed time: 00:04.[/code]


  • Moderators

    ok i was wrong then.

    According to "this post":http://www.postgresql.org/message-id/Pine.LNX.4.30.0108241344260.677-100000@peter.localdomain you need -lpq, what you already had tried. So it seem this was correct. So the problem needs to be somewhere else.



  • [quote author="raven-worx" date="1380013513"]ok i was wrong then.

    According to "this post":http://www.postgresql.org/message-id/Pine.LNX.4.30.0108241344260.677-100000@peter.localdomain you need -lpq, what you already had tried. So it seem this was correct. So the problem needs to be somewhere else.[/quote]

    What do you suggest? I emptied my pockets :)



  • Sorry guys but I'm still stuck with this issue.

    I successfully built Postgresql's client by MinGW and Qt for with static options for enabling Postgresql but I Qt failed in linking the libraries as mentioned in my post https://qt-project.org/forums/viewreply/143908/

    May you give me a hand of help?


  • Lifetime Qt Champion

    Did you also add
    @QTPLUGIN += qsqlmysql@
    to your pro file ?
    and
    @Q_IMPORT_PLUGIN( qsqlmysql )@
    to your main.cpp ?

    EDIT: corrected macro



  • After adding the lines you've mentioned I got this error:
    [code]..\test\main.cpp:5:17: error: expected constructor, destructor, or type conversion before '(' token
    QT_IMPORT_PLUGIN( qsqlpsql )[/code]

    BTW, I never find any *.dll or *.a inside Qt folder where I built it statically!!! so I wonder how these line will link qsqlpsql?


  • Lifetime Qt Champion

    Did you build Qt with qt-sql-psql ? (Not -plugin-sql-psql)



  • [quote author="SGaist" date="1380279497"]Did you build Qt with qt-sql-psql ? (Not -plugin-sql-psql)[/quote]

    Yes; I built using:
    [code]configure -no-warnings-are-errors -qt-pcre -qt-libpng -ltcg -release -developer-build -static -qt-sql-sqlite -qt-sql-psql -qt-zlib -qt-libjpeg -opengl desktop -nomake examples -nomake tests -I C:/postgresql-9.1.9/src/include -L C:/postgresql-9.1.9/src/interfaces/libpq -I C:/postgresql-9.1.9/src/interfaces/libpq[/code]


  • Lifetime Qt Champion

    Sorry, I made a typo for the import macro... I've corrected the post



  • [quote author="SGaist" date="1380405617"]Sorry, I made a typo for the import macro... I've corrected the post[/quote]

    Thanks for correction. Now Qt gave me a new error message about missing qsqlpsql as following:
    [code]c:/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lqsqlpsql
    collect2.exe: error: ld returned 1 exit status
    Makefile.Release:82: recipe for target 'release\test.exe' failed
    mingw32-make[1]: *** [release\test.exe] Error 1
    mingw32-make[1]: Leaving directory 'C:/Users/mbnoimi/Desktop/build-test-Static_PG-Release'
    makefile:34: recipe for target 'release' failed
    mingw32-make: *** [release] Error 2
    17:07:16: The process "C:\mingw48_32\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project test (kit: Static PG)
    When executing step 'Make'
    17:07:16: Elapsed time: 00:13.[/code]

    For fixing this issue I tried to find the missing library but unfortunately I couldn't find it!

    NOTE: Qt built successfully and it didn't show any error message (by using "the above options":https://qt-project.org/forums/viewreply/144398/)

    [code]
    C:\Qt>dir *.a /s /p /w /b
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Bootstrap.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Concurrent.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Core.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Gui.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Network.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5OpenGL.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5OpenGLExtensions.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5PlatformSupport.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5PrintSupport.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Sql.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Test.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Widgets.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libQt5Xml.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\lib\libqtmain.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\accessible\libqtaccessiblewidgets.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\bearer\libqgenericbearer.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\bearer\libqnativewifibearer.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\imageformats\libqico.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\platforms\libqminimal.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\platforms\libqoffscreen.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\platforms\libqwindows.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\plugins\printsupport\libwindowsprintersupport.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\a.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\b.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\c.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\d.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\e.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\tests\auto\corelib\io\qdir\types\f.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtwebkit\WebKitLibraries\libWebCoreSQLite3.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtwebkit\WebKitLibraries\libWebKitSystemInterfaceLion.a
    C:\Qt\Qt5.1.1-static-sqlite-pgsql\qtwebkit\WebKitLibraries\libWebKitSystemInterfaceMountainLion.a
    C:\Qt>
    [/code]


  • Lifetime Qt Champion

    You won't have any plugin lib since they are built in Qt's sql library, did you add qsqlpsql in your pro file ?



  • [quote author="SGaist" date="1380487767"]You won't have any plugin lib since they are built in Qt's sql library, did you add qsqlpsql in your pro file ?[/quote]

    test.pro
    [code]QT += core gui sql

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = test
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp

    HEADERS += mainwindow.h

    FORMS += mainwindow.ui

    QTPLUGIN += qsqlpsql

    QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++ -lpthread

    LIBS += -LC:/postgresql-9.1.9/src/interfaces/libpq -lpq
    [/code]



  • main.cpp
    [code]#include "mainwindow.h"
    #include <QApplication>
    #include <QtPlugin>

    Q_IMPORT_PLUGIN( qsqlpsql )

    int main(int argc, char *argv[])
    {

    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec&#40;&#41;;
    

    }
    [/code]


  • Lifetime Qt Champion

    Just thought that since you have all sql plugins built in you might not need the QTPLUGIN line from the pro file



  • [quote author="SGaist" date="1380528900"]Just thought that since you have all sql plugins built in you might not need the QTPLUGIN line from the pro file[/quote]

    Unfortunately it didn't fix the issue and generated ton of errors as shown in full log of build process: http://paste.kde.org/p96ac01e7

    I'm really frustrated; The hardest step done (building Postgresql with MinGW) while the supposed easy one delays the success!!!


  • Lifetime Qt Champion

    Looks like it needs postgresql symbol, you have to add the link information to postgresql



  • [quote author="SGaist" date="1380785713"]Looks like it needs postgresql symbol, you have to add the link information to postgresql[/quote]

    How can I do it?


  • Lifetime Qt Champion

    Add the same -l and -L to LIBS that you used to build Qt with postgresql



  • [quote author="SGaist" date="1380805190"]Add the same -l and -L to LIBS that you used to build Qt with postgresql[/quote]

    I already added them as mentioned in "a reply before":https://qt-project.org/forums/viewreply/144622/.




Log in to reply
 

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