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.7k 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #45

    Ok... I didn't realize you were trying to build postgresql... You should rather ask them how to do that

    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
      #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

                                          • Login

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