De Superkb, GCC pedante y portabilidad

Por fin se me hizo: cambiar el Makefile de Superkb para usar gcc -std=c99 -pedantic-errors en lugar de -std=gnu99.

Lo que me impedía hacerlo era que uso algunas extensiones de GNU, BSD o POSIX que no se encuentran en el estándar C.

Yo no sabía, pero basta con añadir la línea

#define _GNU_SOURCE

o, según el caso,

#define _POSIX_C_SOURCE 2

al principio del código fuente y glibc reconoce y habilita las funciones que hagan falta.

Esto es un paso hacia adelante, pues ahora ya puedo usar un simple «grep» para ver en qué archivos están «solicitando extensiones».

Desafortunadamente aún falta bastante para llegar al ideal, pues sigo atado a las herramientas de GNU. Por ejemplo ¿qué pasa si trato de compilar sobre OpenSolaris? La última vez que lo intenté, resultó que el Makefile usa extensiones que dependen de gmake (una de ellas es el include no fatal). Pero si hubiera gmake, ¿compilaría?

Sólo hay una manera de saberlo… 😉


Comentarios

De Superkb, GCC pedante y portabilidad — 4 comentarios

  1. hola, como estas.
    Soy estudiante de ing en sist. Novato por cierto para la plataforma Linux. debo presentar una mejora a Linux para aprobar mi curso de SO.

    Intento compilar su programa kb v21.
    – solo instale las librerias que menciona el install
    – llegue al punto de que se creo el icono superkb, donde me pedia que agregara un archivo sample de la carpeta sample a mi /home.
    – lo hice, pero al ejecutar el icono superkb.exe no sucede nada
    – de hecho se traba la maquina.. jaja

    bueno espero puedas ayudarme
    cordial saludo

  2. Pedro:

    No tengo reportes de que se trabe una PC al ejecutar Superkb (al menos no con las versiones estables).

    Desafortunadamente con los datos que me das no hay mucho para ayudarte. Lo que te sugiero es lo siguiente:

    1. Ejecuta «superkb» desde una terminal. Así podrás ver los mensajes de error que arroja. Te darán una idea del origen del problema.

    2. Una vez que ejecutes Superkb, intenta dejar presionada la tecla Win (cualquiera de las dos) o la que esté configurada en tu /home/user/.superkbrc <------ ese debe ser el nombre de archivo. 3. En caso de que sigas teniendo problemas, pasa al canal #superkb en la red FreeNode. -- Usa un cliente como X-Chat 2 (ya sea el de tu distribución de Linux o el de SilvereX para Windows). Y ahí podemos platicar más agusto. Saludos.

  3. hola de nuevo.sigo en la busqueda de la mejora…
    luego de correr el superkb icono en la terminal….obtengo esto:

    superkb 0.21: Welcome. This program is under development.
    It’s strongly recommended to set the following on xorg.conf:

    | Section «ServerFlags»
    | Option «AllowDeactivateGrabs» «On»
    | Option «AllowClosedownGrabs» «On»
    | EndSection

    With these, if the program fails while drawing the keyboard, you will be able
    to kill it by pressing Ctrl-Alt-*, and restore Autorepeat with ‘xset r on’.

    superkb: Specified icon file does not exist: /usr/share/opera/images/opera.xpm
    superkb: Specified icon file does not exist: /usr/share/icons/gnome/48×48/apps/text-editor.png
    superkb: Could not load keyboard information from X. Quitting.

    If using GNOME you might want to try adding akeyboard layout and then
    removing it, and making sure yourdefault layout is effectively selected as
    default.

    como veras, se nota mi novates. jaja, espero puedas ayudarme.

Responder a alvarezp Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *