jueves, 17 de julio de 2014

Problema firmando el GDB (The GNU Project Debugger) en Mac OS X

Buenas tardes,

andábame yo inmerso en un fantástico proyecto cross-platform desarrollado en Lazarus (el famoso clon del mítico Delphi, que ya por fin funciona y es usable) cuando se me ocurrió probar el tema de las múltiples plataformas instalando el IDE en el Mac.

La instalación de Lazarus  es sencilla en principio (como cualquier otra aplicación de Mac). El problema es que hace falta tener instaladas las "command-line tools" y parece ser que en Xcode 5.0 no es tan trivial como parece.

Pues bien, el principal problema es que hay que instalar el debugger de GNU (es decir, la herramienta gdb) y hay que firmarla con un certificado.

Siguiendo las guías oficiales me encontré con algunos escollos que no estaban bien aclarados, y que una vez resueltos, comparto con todo el mundo por si os ocurre también. Las guías en cuestión son:


y


Podéis seguir sin problema paso a paso ambos manuales. Pero al llegar a la parte de cómo crear un certificado y cómo firmar el ejecutable del debugger, hay que tener en cuenta dos detalles que no se dicen:

Para poder crear el certificado con el asistente siguiendo los mismos pasos, antes tenéis que desbloquear la opción de crear certificados de tipo system. Si no, simplemente no os saldrán las opciones correctas en el asistente (sólo unas parecidas) y estaréis perdidos al intentar seguir los pasos del manual. Para ello tenéis que desbloquear la herramienta de acceso a las claves y certificados:



Una vez realizado ese paso ya podéis usar el asistente para la creación del certificado exactamente en los mismos términos que explica la guía.

Si todo ha salido bien, el siguiente paso es firmar el ejecutable gdb siguiendo los pasos de la guía. Esos pasos son correctos y hay que seguirlos. Sin embargo, no se nos avisa de que para que Lazarus reconozca al ejecutable del debugger como un programa firmado, hay que, o bien reiniciar el sistema (innecesario y exagerado) o bien escribir el siguiente comando en la terminal (como root):

killall taskgated

Tras esto, volved a abrir Lazarus y ya debería dejaros compilar y debuguear sin problemas.