Compilación del plugin de las librerías QT para PostgreSQL en Ubuntu 9.10

El plugin para Postgres de las versiones oficiales 4.5.2 y 4.5.3 de las librerías QT presenta un error en las consultas de números de coma flotante que provoca el truncado de los decimales. En esta página vamos a exponer una forma sencilla de compilar el driver corregido para sustituir al original.

El primer paso será identificar la versión de nuestras librerías QT y descargar los fuentes de las mismas. Si utilizamos Ubuntu 9.10, verificaremos a través de la consulta de los paquetes instalados que nuestra versión es la “4.5.3really4.5.2-0ubuntu1”; En la página  http://packages.ubuntu.com/karmic/libqt4-sql-psql podremos encontrar un enlace al paquete qt4-x11_4.5.3really4.5.2.orig.tar.gz que descargaremos y descomprimiremos en una carpeta de nuestro sistema de archivos de usuario. Nuestra siguiente tarea será configurar las QT para que operen con el plugin de Postgres; para ello nos situaremos en el directorio qt-x11-opensource-src-4.5.2 y ejecutaremos:

./configure -plugin-sql-psql

Tras la configuración, localizaremos el fichero “qsql_psql.cpp” con el contenido del código fuente del plugin en la ruta qt-x11-opensource-src-4.5.2/src/sql/drivers/psql, y lo sustituiremos por el descargado de la página http://bugreports.qt.nokia.com/browse/QTBUG-5179.

Para la compilación del plugin necesitaremos enlazar con las librerías de la versión de desarrollo de Postgres “libpq-dev”, que podremos instalar con algún gestor de paquetes (por ejemplo el de Synaptic). El siguiente paso consistirá en la edición del fichero “psql.pro” que encontraremos en qt-x11-opensource-src-4.5.2/src/plugins/sqldrivers/psql, al que añadiremos unas líneas para informar de la localización de las librerías Postgres:

INCLUDEPATH+=/usr/include/postgresql /usr/include/postgresql/libpq
LIBS+=-L/usr/lib -lpq

Por último, nos situaremos en el directorio “qt-x11-opensource-src-4.5.2”, y compilaremos:

make

No efectuaremos “make install” porque tan solo estamos interesados en el fichero del plugin, que podremos encontrar en “qt-x11-opensource-src-4.5.2/plugins/sqldrivers/libqsqlpsql.so”. Este archivo lo copiaremos a la ruta donde está situado el plugin Postgres de nuestra distribución Linux: /usr/lib/qt4/plugins/sqldrivers

12 comments on “Compilación del plugin de las librerías QT para PostgreSQL en Ubuntu 9.10
  1. Sergio dice:

    como seria para que esto mismo que hicieron en linux se haga en windows

  2. dibosa dice:

    El driver de las QT en Windows no presenta este error. No obstante, en el artículo “Aplicaciones multiplataforma con QT4 y C++” se trata la compilación del driver QT para MySQL; para PostgreSQL el proceso sería similar.

    • sergio dice:

      a mi me manda que el driver no existe por eso es que queria crear el driver, estoy usando Qt Creator

      • dibosa dice:

        Tienes que descargarte los fuentes de las qt y configurarlas con la utilidad configure para que se creen y compilen los drivers para las bases de datos que quieras. Por defecto creo que sólo se genera soporte para SQLITE. Después tienes que recompilar enlazando con las librerías de desarrollo de la base de datos. Para Postgres no tienes que convertir las librerías como en MySQL

      • Sergio dice:

        gracias por tu ayuda, voy hacer eso.

      • sergio dice:

        logre crear las dll se guardan en el directorio plugins/sqldrivers, los archivos que se crearon son:
        qsqlpsql4.dll,qsqlpsqld4.dll,libqsqlpsqld4.a,libqsqlpsql4.a pero aun no detecta los drivers

        uso el siguiente codigo para ver si el driver existe,

        #ifndef DATABASE_H
        #define DATABASE_H

        #include
        #include
        #include
        #include

        static bool createConnection()
        {

        if (QSqlDatabase::isDriverAvailable(“QPSQL”)) {

        QMessageBox::critical(0, qApp->tr(“Database Open”),qApp->tr(“Driver encontrado.\n”
        “Haga clic en en cancel para salir.”), QMessageBox::Cancel);

        }

        else
        {

        QMessageBox::critical(0, qApp->tr(“No Se Abre la base de datos”),qApp->tr(“Driver no encontrado.\n”
        “Click Cancel to exit.”), QMessageBox::Cancel);

        }

        return true;
        }

        #endif

        he buscado por todos lados para ver como cargar el driver pero no lo logro hacer yo se que he estado haciendo muchas preguntas disculpa tanta molestia.

        Gracias de antemano.

      • dibosa dice:

        Después de la compilación habrás tenido que realizar un “make install”

        De todas formas, copia los archivos de los plugins al mismo directorio donde tienes el ejecutable del programa, copia también el libpq.dll y prueba a ver qué es lo que pasa.
        Yo dí soporte a KEME compilando todos los drivers dentro del controlador sql en lugar de crear los plugins

        Un saludo,

        José Manuel

  3. sergio dice:

    Funciono al fin encuentra el plugin, para que funcionara, copie las dll de la carpeta bin de la carpeta de instalacion de postgresql a donde esta el ejecutable del aplicativo en Qt.

  4. Fernando dice:

    Hola soy nuevo en esto tengo una pregunta a que te refieres con “fuentes de las qt y configurarlas con la utilidad configure”

  5. dibosa dice:

    Los fuentes de la qt no son más que el código C++ en el que están programadas las librerías. La utilidad “configure” es un comando que sirve para configurar la compilación de las librerías y de esta forma adaptarlas a nuestras necesidades.

    Un saludo

  6. Fernando dice:

    Gracias por la respuesta, ya tengo los drivers de postgres siguiendo tus pasos, solo que no puedo compilar en modo release solo me deja en debug.

    • dibosa dice:

      Esto puede ser debido a la forma en que has construido las librerías QT y/o los drivers; trata de volver a compilarlas para que soporten específicamente el modo “release”

      Un saludo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: