Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Static build for SQL plugin
Qt 6.11 is out! See what's new in the release blog

Static build for SQL plugin

Scheduled Pinned Locked Moved General and Desktop
69 Posts 3 Posters 44.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mbnoimi
    wrote on last edited by
    #46

    [quote]

    Ok… I didn’t realize you were trying to build postgresql… You should rather ask them how to do that
    [/quote]

    Finally I successfully built libpg (Postgresql client) with OpenSSL but now Qt itself gives me error message after calling ming32-make as following:

    [code]g++ -c -include release\qt_pch.h -pipe -fno-keep-inline-dllexport -O2 -std=c++0x
    -fno-exceptions -frtti -Wall -Wextra -DUNICODE -DQT_NO_USING_NAMESPACE -DQT_BUI
    LD_SQL_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_
    MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECA
    TED_BEFORE=0x040800 -D_USE_MATH_DEFINES -DQT_NO_CAST_FROM_ASCII -DNDEBUG -DSQLIT
    E_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_COMPLETE -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABL
    E_FTS3_PARENTHESIS -DSQLITE_ENABLE_RTREE -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_C
    ORE_LIB -I. -I"F:\Postgresql-static\postgresql-9.1.9\src\include" -I"....\inclu
    de" -I"....\include\QtSql" -I"....\include" -I"....\include\QtSql" -I"....\i
    nclude\QtSql\5.1.1" -I"....\include\QtSql\5.1.1\QtSql" -I"tmp" -I"..\3rdparty\s
    qlite" -I"....\include\QtCore" -I"....\include\QtCore" -I"....\include\QtCore
    \5.1.1" -I"....\include\QtCore\5.1.1\QtCore" -I".moc\release_static" -I"." -I"C
    :\Qt\Qt5.1.1-static-sqlite-pgsql\qtbase\mkspecs\win32-g++" -o .obj\release_stati
    c\qsql_psql.o drivers\psql\qsql_psql.cpp
    drivers\psql\qsql_psql.cpp:59:22: fatal error: libpq-fe.h: No such file or direc
    tory
    #include <libpq-fe.h>
    ^
    compilation terminated.
    Makefile.Release:3320: recipe for target '.obj/release_static/qsql_psql.o' faile
    d
    mingw32-make[3]: *** [.obj/release_static/qsql_psql.o] Error 1
    mingw32-make[3]: Leaving directory 'C:/Qt/Qt5.1.1-static-sqlite-pgsql/qtbase/src
    /sql'
    Makefile:34: recipe for target 'release' failed
    mingw32-make[2]: *** [release] Error 2
    mingw32-make[2]: Leaving directory 'C:/Qt/Qt5.1.1-static-sqlite-pgsql/qtbase/src
    /sql'
    Makefile:207: recipe for target 'sub-sql-make_first' failed
    mingw32-make[1]: *** [sub-sql-make_first] Error 2
    mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.1.1-static-sqlite-pgsql/qtbase/src
    '
    makefile:41: recipe for target 'sub-src-make_first' failed
    mingw32-make: *** [sub-src-make_first] Error 2[/code]

    It crystal clear that this issue related to unknown path although I passed the paths during configure step as following:

    [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-static/postgresql-9.1.9/src/include -L C:/Postgresql-static/postgresql-9.1.9/src/interfaces/libpq[/code]

    ls of libpq folder is:
    [code]Postgresql-static/postgresql-9.1.9/src/interfaces/libpq > ls *.h
    fe-auth.h libpq-events.h libpq-fe.h libpq-int.h pqexpbuffer.h pqsignal.h win32.h[/code]

    NOTE: libpq-fe.h already exists in C:/Postgresql-static/postgresql-9.1.9/src/interfaces/libpq !!!

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mbnoimi
      wrote on last edited by
      #47

      I fixed the above issue and built Qt successfully by using the following configurations:

      [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]

      But as soon as I call any SQL class I get linking error although I successfully built Qt and Postgresql by MinGW!
      http://pastebin.com/2e8pqnmM

      I used the following project to test SQL connectivity:

      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

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

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

      main.cpp
      [code]QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
      db.setHostName("192.168.0.74");
      db.setPort(5432);
      db.setDatabaseName("testDB");
      db.setUserName("postgres");
      db.setPassword("pass");
      if (!db.open())
      qDebug() << "Unable to connect!";
      else
      qDebug() << "connected.";[/code]

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mbnoimi
        wrote on last edited by
        #48

        BTW, libpq.a and libpq.dll are exists in in C:\postgresql-9.1.9\src\interfaces\libpq

        1 Reply Last reply
        0
        • raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #49

          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

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mbnoimi
            wrote on last edited by
            #50

            [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]

            1 Reply Last reply
            0
            • raven-worxR Offline
              raven-worxR Offline
              raven-worx
              Moderators
              wrote on last edited by
              #51

              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.

              --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
              If you have a question please use the forum so others can benefit from the solution in the future

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mbnoimi
                wrote on last edited by
                #52

                [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 :)

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mbnoimi
                  wrote on last edited by
                  #53

                  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?

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #54

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

                    EDIT: corrected macro

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mbnoimi
                      wrote on last edited by
                      #55

                      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?

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #56

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

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mbnoimi
                          wrote on last edited by
                          #57

                          [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]

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #58

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

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              mbnoimi
                              wrote on last edited by
                              #59

                              [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]

                              1 Reply Last reply
                              0
                              • SGaistS Offline
                                SGaistS Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on last edited by
                                #60

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

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  mbnoimi
                                  wrote on last edited by
                                  #61

                                  [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]

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    mbnoimi
                                    wrote on last edited by
                                    #62

                                    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]

                                    1 Reply Last reply
                                    0
                                    • SGaistS Offline
                                      SGaistS Offline
                                      SGaist
                                      Lifetime Qt Champion
                                      wrote on last edited by
                                      #63

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

                                      Interested in AI ? www.idiap.ch
                                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        mbnoimi
                                        wrote on last edited by
                                        #64

                                        [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!!!

                                        1 Reply Last reply
                                        0
                                        • SGaistS Offline
                                          SGaistS Offline
                                          SGaist
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #65

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

                                          Interested in AI ? www.idiap.ch
                                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved