Compilador de Pascal en Windows al estilo GNU/Linux

Nuestro profesor de programación proporciona siempre a los alumnos nuevos un manual de Pascal Estandard ISO 10206 (Extendido) con un montón de información concisa sobre las palabras reservadas del lenguaje y su uso. Además al final siempre agrega un pequeño tutorial sobre como instalar los compiladores en máquinas con Debian y con Windows. Para el sistema de Microsoft, recomienda un IDE que se puede descargar desde http://www.gnu-pascal.de/binary/mingw32/. Sin embargo, este entorno integrado instala además otros programas accesorios (me viene a la cabeza un recurrente creador de asistentes de instalación o unos programas de ejemplo listos para compilar) y esto puede que no nos guste tanto. A mi personalmente me gusta más la forma de trabajo de GNU/Linux, especialmente si usamos una distro como Ubuntu y tenemos instalado gEdit y el compilador “gpc”. Basta con tener el editor y el compilador, sin llenar de cosas innecesarias nuestro disco duro, y además el resaltado de sintaxis de gEdit es eficiente y visualmente mucho más claro que el del entorno integrado.
Pero para aquellos que se sientan más cómodos trabajando en Windows (que no es malo por sí mismo, sino distinto a Ubuntu), podemos lograr deshacernos del IDE y escribir nuestros programas de forma mucho menos incómoda. Vamos a tener que bajarnos dos cosas:

1. Las librerías de MinGW (Minimal GNU for Windows) obtenibles desde Sourceforge: http://sourceforge.net/projects/mingw/files/
2. Los archivos mínimos del compilador GPC para Windows obtenibles desde la página oficial: http://gnu-pascal.de/contrib/chief/win32/mingw32/3.4.5/gpc-20070904.i386-pc-mingw32.tar.gz
Es una lástima que estos últimos no se actualicen desde 2007, pero bastaría con echar un vistazo de vez en cuando a http://www.gnu-pascal.de/binary/mingw32/ y revisar si en la categoría “GPC Snapshots and releases (Stable)” aparece algún archivo más reciente que el “gpc-20070904.i386-pc-mingw32.tar.gz” de Septiembre de 2007.
En cualquier caso, por ahora nos vale con esto. Una vez los tengamos descargados, iniciamos la instalación de las librerias GNU. Basicamente con dejar todas las opciones por defecto será suficiente. Las pantallas clave son las siguientes, y hay que seleccionar las opciones que aquí se ven:


Si descomprimimos el archivo del compilador, encontraremos una carpeta llamada precisamente “mingw” y dentro de la cual habrá las siguientes carpetas: bin, doc, info, lib, libexec, man.
Todas estas las copiaremos al directorio donde hemos instalado MinGW, que por defecto es “C:\Mingw” donde encontraremos unas exactamente iguales y tendremos que sobreescribirlas.

Ahora ya están las librerías GNU y el compilador instalados y funcionan a la perfección asi que sólo nos falta un último paso: hacer que, estemos en el directorio en el que estemos, podamos invocarlos con la orden apropiada.
Para conseguirlo tenemos que agregar la ruta donde están al PATH del sistema operativo; lo que significa que cada vez que ejecutemos el comando “gpc“, el SO buscará ese programa entre sus carpetas y tambien las que haya en el PATH. Basta con hacer clic sobre “Mi PC” con el botón derecho y clicar en “Propiedades“. Luego, bajo la pestaña “Opciones avanzadas” pinchamos en “Variables de entorno“. Dentro de esta nueva ventana, debemos modificar la linea PATH y agregar al final un punto y coma (si es que no lo hay) que separe las rutas actuales de la nueva que vamos a introducir, y que no es otra que “C:\Mingw\bin“, que es donde se encuentra el programa compilador.


Ahora pinchamos aceptar en todas las ventanas y ya podremos utilizar el compilador desde cualquier ventana del Símbolo de sistema; las instrucciones son las mismas que en GNU/Linux:
gpc --extended-pascal programa.pas
gpc --extended-pascal -c modulo.pas

En la siguiente captura se puede ver un ejemplo donde he compilado un modulo y dos programas:

Al igual que en su sistema nativo, se genera un ejecutable llamado “a” que aquí tiene naturalmente extensión “.exe“. Pude comprobar que esto tambien es efectivo en Windows 7 (y me imagino que tambien en Vista) salvando la diferencia de que “Mi PC” se llama equipo y en sus propiedades hay que pinchar antes en la opción que aparece en la barra lateral llamada “Configuración avanzada del sistema“.
Otra buena noticia. De regalo se instala el GCC (compilador GNU de C) ya que en realidad GPC no es un compilador, sino que preprocesa el codigo fuente de Pascal a codigo fuente en C para luego invocar a gcc y compilar; asi que si has seguido todos los pasos, esto tambien preparará tu sistema para compilar programas escritos en C en este sistema operativo de forma “Ubuntu-like“.
Esta entrada no estaría completa sin un editor de texto apropiado. Y ya que queremos que se asemeje a Ubuntu, instalemos una versión para Windows del genial gEdit. Gnome la proporciona en su sitio FTP y está disponible en ftp://ftp.gnome.org/pub/GNOME/binaries/win32/gedit/
Con escojer la carpeta y el instalador correspondientes a la versión más reciente, ya podremos instalarlo y usarlo sin problemas.

Anuncios

33 pensamientos en “Compilador de Pascal en Windows al estilo GNU/Linux

  1. Estoy siguiendo tu tutorial para instalar el GPC en windows y siempre tengo el mismo problema: tras instalarlo, cuando intento compilar, me salta este mensaje de error:

    ¿Alguna idea de qué puedo estar haciendo mal?

    Gracias de todas formas.

    Me gusta

    • Hola de nuevo

      Lo del PATH te lo decía porque es un error que suele dar cuando no encuentra el enlace con algunas libreríás.
      Te recomiendo que crees un archivo hola.pas cuyo contenido sea:

      program hola (output);
      begin
      writeln ('hola');
      end.

      Deberíamos descartar que el error esté en el codigo fuente de tu archivo (tanto en errores del código como de la codificación de los caracteres, el formato o cualquier otro aspecto)…

      Me gusta

  2. hola, estoy comenzando en este mundillo y quisiera saber como hacer un .exe de varios codigos fuentes de un programa que se llama uniflash, es free, y he actualizado su base de datos, pero no se como hacerlo, esta en pascal, este programa es para actualizar las bios, gracias

    Me gusta

    • Busca en la documentación del programa información sobre el compilador que has de usar (puede que necesites una implementación en concreto) y sobre la compilación (opciones, flags, etc.)
      Deberías poder localizar algún Readme.txt o similares.

      Me gusta

    • Hola Frank; en Windows los ejecutables se nombran con extensión “.exe”, así que deberías escribir:
      a.exe (o simplemente a) para lanzar el programa. La forma en que lo estás haciendo es la forma nativa de sistemas tipo Unix (como MacOS o GNU/Linux entre otros).

      Me gusta

      • Sí, me di cuenta al poco de hacerte la pregunta, menuda cafrada…En fin…Una cosa. He instalado el Make con el MinGW, pero, después de compilar módulo a módulo todo el programa, cuando trato de compilarlo todo con ‘gpc –extended-pascal –automake (….).pas’ me sale un mesaje de error que me dice que no se ha podido encontrar gpc1…

        Me gusta

          • Hola, el script del make es:

            @echo compilar: moduloFicheros.pas moduloCadenas.pas moduloEstadistica.pas moduloHash.pas moduloSinRepetidas.pas moduloOrdenacion.pas moduloCriptografia.pas practica.pas #Ficheros necesarios para ejecutar esta orden
            @echo “Comenzando compilación…”
            gpc –extended-pascal -c moduloFicheros.pas -o moduloFicheros.o
            gpc –extended-pascal -c moduloCadenas.pas -o moduloCadenas.o
            gpc –extended-pascal -c moduloEstadistica.pas -o moduloEstadistica.o
            gpc –extended-pascal -c moduloHash.pas -o moduloHash.o
            gpc –extended-pascal -c moduloOrdenacion.pas -o moduloOrdenacion.o
            gpc –extended-pascal -c moduloSinRepetidas.pas -o moduloSinRepetidas.o
            gpc –extended-pascal -c moduloCriptografia.pas -o moduloCriptografia.o
            gpc –extended-pascal moduloCadenas.o moduloFicheros.o moduloEstadistica.o moduloHash.o moduloSinRepetidas.o moduloOrdenacion.o moduloCriptografia.o practica.pas -o practica.out
            @echo “Compilación terminada…”
            @echo clean:
            @echo “Limpiando directorio”
            -rm -f *.{out,gpi,o}
            @echo “Directorio limpio”

            Me gusta

            • Hola Frank, veo que te has liado un poco con la sintaxis del archivo. Un par de aclaraciones:

              @echo "mensaje"
              Muestra por pantalla el mensaje que escribas entre comillas dobles

              compilar y clean
              Estas son las acciones que defines en make, para invocarlas más adelante directamente sin tener que escribir todos sus comandos uno a uno. No las pongas delante de @echo (no tiene sentido).

              rm
              Este es el comando de borrado estándar en la consola de Unix (y derivados). En Windows el comando para borrar ficheros es del y el de eliminar directorios es rmdir. Sé precavido utilizándolos.

              Mucho ojo con los guiones (y dobles guiones). Y también vigila la tabulación de las líneas de comando (es obligatoria). No he podido hacer pruebas en este momento, pero antes de buscar otras soluciones, es recomendable que depures tu makefile.

              Me gusta

  3. Por cierto, el gpc se retiró de los repositorios de Debian hace mucho. Quería preguntarte si instalando una versión antigua de Ubuntu, por ejemplo la 10 o la 11, podría instalarlo en él o estos repositorios ya no están ni en esos sistemas.

    Me gusta

    • He hecho una prueba rápida instalando la versión 10.04.4 en una máquina virtual y me temo que los repositorios para esa versión ya han sido desactivados. Estamos hablando de un SO con casi ocho años de antigüedad, que incluso a pesar de ser LTS ya ha terminado su ciclo de soporte. Tal vez puedas instalar el gpc descargándote el paquete concreto e instalándolo manualmente o compilándolo, pero sus dependencias pueden ser muy complicadas de satisfacer a estas alturas…

      Me gusta

      • Sí, también lo he hecho yo y con la misma versión de Ubuntu. Manualmente no controlo lo suficiente para compilarlo. Tendré que seguir trabajando en el make de windows…jaja

        Me gusta

  4. Hola de nuevo…Qué me falta en el make?

    @echo "Comenzando compilación..."
    gpc --extended-pascal -c moduloFicheros.pas 
    gpc --extended-pascal -c moduloCadenas.pas 
    gpc --extended-pascal -c moduloEstadistica.pas 
    gpc --extended-pascal -c moduloHash.pas 
    gpc --extended-pascal -c moduloOrdenacion.pas
    gpc --extended-pascal -c moduloSinRepetidas.pas 
    gpc --extended-pascal -c moduloCriptografia.pas 
    gpc --extended-pascal practica.pas
    @echo "Compilación terminada..."
    
    @echo "Limpiando directorio..."
        del *.o
        del *.gpi
    @echo "Directorio limpio."
    

    Me gusta

    • Hola Frank
      Te faltan las palabras clave e indentar el código correctamente. Las palabras clave son las órdenes que puedes darle a tu make (y los ficheros asociados a esa orden). En tu caso, por ejemplo:


      compile: moduloFicheros.pas moduloCadenas.pas moduloEstadistica.pas moduloHash.pas moduloOrdenacion.pas moduloSinRepetidas.pas moduloCriptografia.pas practica.pas
         @echo "Comenzando compilación..."
         gpc --extended-pascal -c moduloFicheros.pas
         gpc --extended-pascal -c moduloCadenas.pas
         gpc --extended-pascal -c moduloEstadistica.pas
         gpc --extended-pascal -c moduloHash.pas
         gpc --extended-pascal -c moduloOrdenacion.pas
         gpc --extended-pascal -c moduloSinRepetidas.pas
         gpc --extended-pascal -c moduloCriptografia.pas
         gpc --extended-pascal practica.pas
         @echo "Compilación terminada..."

      clean:
         @echo "Limpiando directorio..."
         del *.o
         del *.gpi
         @echo "Directorio limpio."

      Me gusta

        • Eso es porque make utiliza los caracteres de tabulador como una forma de interpretar el script. No es algo tan extraño, porque también sucede en la sintaxis de otros lenguajes, como por ejemplo Python. Esto permite que la sintaxis no necesite tantos signos (como paréntesis o puntos y comas) y hace la lectura del código un poco más simple y natural.
          Me alegra que hayas conseguido hacerlo funcionar y que conozcas un poco más sobre esta utilidad 🙂

          Me gusta

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 )

Google+ photo

Estás comentando usando tu cuenta de Google+. 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 )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.