¡COMPILE TIME!

Este ha sido un fin de semana de descargar, instalar y compilar. Pero a lo bestia 😀

Por una parte, Canonical ha liberado la Ubuntu 12.10, junto con su contrapartida Kubuntu. Me descargué ambas versiones esperando ver mejoras, y al final me quedé a medias: aunque el soporte de KNetworkManager ha mejorado (por fin reconoce mi wifi doméstica) y las opciones de energía solucionan el problema del calentamiento excesivo de mi portátil, la gestión de la tarjeta gráfica sigue siendo deficiente… ¡vamos, que no tengo aceleración 3D! Y ese es un problema grave en KDE, donde sin aceleración 3D los efectos de escritorio son horrendos, así que he dejado Unity por ahora (esta nueva versión elimina el Unity 2D pero tira de procesador para las tareas de decoración, y teniendo un i7 funcionando creo que puedo permitirme el lujo)

Por otro lado, al terminar de instalar y configurar Ubuntu intenté hacer lo propio con las librerías Qt. La última versión hasta la fecha era la 4.8.3, pero me llevé una desagradable sorpresa al intentarlo… un inesperado error de compilación en el WebKit mandaba al traste todos los intentos por hacerlo funcionar.

Después de una tediosa investigación, encontré la raíz del problema: la opción -fuse-ld=gold que aparecía junto al g++. Al parecer indica al compilador que utilice el linker gold en vez del clásico, para que sea más rápido, y es una opción que tienen en producción la gente de Trolltech/Nokia/Digia. Esta opción no está soportada en todos los paquetes GNU / GCC de todas las distribuciones (como ejemplo, ejem, Debian y Ubuntu). La solución ha sido buscar un parche para el archivo de proyecto y aplicarlo antes de lanzar el ./configure… paso a ponerlo aquí también porque me huelo que cuando salga Qt 5 ni se les habrá ocurrido mirarlo:

+--- qt-everywhere-opensource-src-4.8.0.orig/src/3rdparty/webkit/Source/common.pri
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/common.pri
+@@ -3,12 +3,12 @@
+ contains(JAVASCRIPTCORE_JIT,yes): DEFINES+=ENABLE_JIT=1
+ contains(JAVASCRIPTCORE_JIT,no): DEFINES+=ENABLE_JIT=0
+ 
+-linux-g++ {
+-isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
+-    message(Using gold linker)
+-    QMAKE_LFLAGS+=-fuse-ld=gold
+-}
+-}
++#linux-g++ {
++#isEmpty($$(SBOX_DPKG_INST_ARCH)):exists(/usr/bin/ld.gold) {
++#    message(Using gold linker)
++#    QMAKE_LFLAGS+=-fuse-ld=gold
++#}
++#}
+ 
+ # We use this flag on production branches
+ # See https://bugs.webkit.org/show_bug.cgi?id=60824
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