Compilando el plugin QOCI en Qt 5.4.0 para Linux

logo SQLComo para intentar hacer una práctica en condiciones tengo que conectarme a una base de datos Oracle, y quiero hacer una interfaz gráfica resultona, me veo en la necesidad de compilar el plugin QOCI de Qt. Recordemos: QOCI es el plugin de conexión SQL para las bases de datos Oracle. No viene compilado por defecto (seguramente debido a un tema de licencias), y por eso mismo vamos a tener que arremangarnos y compilarlo nosotros mismos; para ello, vamos a seguir las instrucciones de CodeProgress.com. ¿Preparados?

1.- Descargar las librerías de desarrollo necesarias.

Estas librerías no están disponibles en los repositorios de Kubuntu (no sé si en vuestra distribución aparecerán, pero sospecho que tampoco será el caso), así que acudimos a la página de Oracle y nos descargamos el InstantClient para Linux x86_64  (dependiendo de tu arquitectura, tendrás que seleccionar correctamente la descarga). En la misma página de descarga del InstantClient, debemos de buscar el SDK y descargarlo también, ya que incluye las cabeceras necesarias para compilar el plugin. Una vez descargadas, las descomprimimos en un mismo directorio para facilitar las cosas (en mi caso, están en /opt/oracle/instantclient_12_1, pero podéis ponerlas donde queráis).

2.- Preparar las librerías

Una vez descargadas y descomprimidas, tenemos que buscar la librería libclntsh y crear un enlace simbólico con la extensión .SO ¿Por qué? La librería que inlcuye el cliente tiene un número de versión, y por eso mismo al intentar compilar nos dará un fallo ya que Qt buscará la librería sin número de versión. ¿Podríamos modificar el nombre directamente? Sí, pero perdemos la capacidad de usar el cliente o cualquier otro programa que haga uso de dicha librería, así que tiramos de instrucciones y creamos el enlace, mediante la llamada a ln -s libclntsh.12.1.so libclntsh.so. Este es mi caso, no el vuestro, así que tened cuidado.

3.- Buscar el directorio de código fuente de la versión de Qt que vayamos a utilizar

En mi caso, los tengo instalados dentro de /opt, así que voy a /opt/Digia/Qt5.4.0/5.4/Src. Una vez allí, tenemos que buscar el directorio donde se encuentra el código de los plugins, qtbase/src/plugins/sqldrivers, y entramos en el directorio del plugin de QOCI, que se llama oci.

4.- Compilamos el plugin

Para compilar el plugin, lo más cómodo en mi caso es utilizar un script propio; esto es así porque los permisos de acceso y escritura en el directorio /opt/Digia están muy restringidos en mi caso (sólo acceso y lectura), así que tengo que lanzar el comando en modo administrador y es más cómo hacerlo utilizando un script. Para compilar, primero debemos de utilizar qmake para generar el proyecto; recordad que debemos de utilizar el binario de qmake de la versión de Qt que vayamos a emplear, y si la instalación que tenemos no incluye las variables de entorno en el sistema, no encontrará dicha versión. Debemos de especificar la ruta completa del binario, en mi caso /opt/Digia/Qt5.4.0/5.4/gcc_64/bin/qmake.

También hay que incluir las rutas de las cabeceras de desarrollo y de las librerías del instant client de oracle, para lo cual utilizamos la sintaxis de qmake: /opt/Digia/Qt5.4.0/5.4/gcc_64/bin/qmake “INCLUDEPATH += /opt/oracle/instantclient_12_1/sdk/include ” “LIBS += -L/opt/oracle/instantclient_12_1 -lclntsh.so” oci.pro. Este último archivo es el del archivo de proyecto del plugin, necesario para generar el makefile. ¿Veis por qué lo tengo en un script?

Una vez lanzado el script con los permisos adecuados, se generará un Makefile, el cual ejecutaremos con make.

5.- Mover el plugin a su lugar correcto.

Una vez lancemos el make, se compilará el plugin. ¿Dónde? Pues resulta que el make mueve, por defecto, el plugin recién compilado a una localización antigua que no nos sirve. Tenemos que buscarlo en Src/qtbase/plugins/sqldrivers, y de allí copiar el archivo a su localización correcta, sita en 5.4/gcc_64/plugins/sqldrivers.

¡Y listo! Ya sólo nos queda comprobar que efectivamente, funciona correctamente. Si hay algún problema de dependencias de librerías al intentar compilar un proyecto que haga uso del plugin QOCI, CodeProgress.com nos da algunos consejos para intentar lidiar con ellos. ¡Suerte!

Anuncios

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