Curso de C El Rincón del C - www.elrincondelc.com

Instalación y uso de DJGPP

[Anterior] [Siguiente] [Contenido]

Inicialmente este documento se basaba en el readme.1st de la versión 2.01.

Esta información corresponde a la versión 2.03 (la versión actual es la 2.03) del DJGPP. Consulta los ficheros readme.1st en la página de DeCas en caso de que la información esté desfasada.

Encontrarás más documentación sobre DJGPP en la página del Proyecto DECAS (proyecto para la traducción del compilador DJGPP al Castellano, por favor colabora tu tambien).

Si quieres estar a la última en DJGPP consulta la sección DJGPP Actualizado.

Contenido:

[Arriba]

Dónde conseguir DJGPP

En Internet:

Puedes encontrar el DJGPP en:

http://www.delorie.com/djgpp/ (La página está en Inglés)

Tienen un apartado en el que te indican qué ficheros debes bajarte según lo que quieras hacer (zip picker). Por ejemplo, si sólo quieres compilar programas de C, no necesitas los ficheros relacionados con C++. Para saber lo que necesitas consulta más abajo el apartado 'Ficheros necesarios para empezar'.

Una vez tengas los ficheros que necesitas debes ir al FTP de Rediris y bajartelos:

ftp://ftp.rediris.es/mirror/simtelnet/gnu/djgpp/

En CD-ROM:

Si tu conexión a Internet es muy lenta y dado que son muchos Megabytes los que hay que bajarse puedes encargar tu CD-Rom DJGPP con la versión más actualizada por sólo 1.500 pts (US$10) aqui.

[Arriba]

Ficheros incluidos en la distribución

Aquí tienes una lista detallada de los ficheros que forman parte de la distribución. Es una información interesante, así te haces una idea de las herramientas que dispones. Desgraciadamente esta lista corresponde a la versión 2.01 y la última es la 2.03.

Los ficheros con una 'b' al final son los binarios (los que contienen los programas compilados) y los que tienen una 's' son los códigos fuente. Lo más seguro es que sólo quieras los binarios.

Ver lista de ficheros

[Arriba]

Ficheros necesarios para empezar

Para compilar programas en C: djdev*.zip
gcc*b.zip
bnu*b.zip
v2/
v2gnu/
v2gnu/
Si también quieres compilar C++: gpp*b.zip
lgp*.zip
v2gnu/
v2gnu/
Para ver los manuales (ejecutar info): txi*b.zip v2gnu/
Entorno de desarrollo (Estilo Borland C, recomendado): rhide*b.zip v2gnu/
FAQ (lista de preguntas más frecuentes, recomendado): faq*b.zip v2/

El asterisco indica el número de versión. Por ejemplo el fichero correspondiente a la versión 2.95.2 de gcc será gcc2952b.zip. Conviene coger siempre los de número mayor, que indica la última versión. Aquí están las últimas versiones de algunos ficheros:

Es importante es coger los que acaban en 'b' (binaries), que son los programas ya compilados. Si coges los que tienen una 's' (source) tendrás que compilarlos tu mismo. Lo mejor es bajarse los ficheros binarios y no complicarse la vida.

También puede resultar interesante bajarse mak*b.zip donde está el GNU Make. Algunos programas tienen varios ficheros fuente y en vez de tener que compilarlos uno a uno se usa el programa make.

Si estás usando Windows, QDPMI, 386Max, NWDOS, OpenDOS, OS/2, Win/NT y Linux DOSEmu ya tienes todo lo necesario para empezar. Si usas MS-Dos necesitarás un servidor DPMI. Si no sabes lo que es no te preocupes, basta con tenerlo instalado. Para instalar un DPMI coge el fichero csdpmi3b.zip.

Es importante indicar que DJGPP es mucho más que estos ficheros, existen multitud de programas y herramientas que facilitan mucho la vida del programador. Esto no es más que la instalación mínima (y muy mínima).

Para más información descárgate también el fichero faq*b.zip (la FAQ completa, última versión @versionfaq;) y lee el capítulo 4.

[Arriba]

Cómo instalar DJGPP (Instalación básica)

Suponiendo que ya te has bajado todos los ficheros necesarios ahora vamos a proceder a la instalación.

1.- Lo primero que se debe hacer es crear el directorio (o carpeta) donde instalaremos DJGPP. Podemos instalar DJGPP en cualquier unidad de nuestro disco duro. Vamos a suponer que lo instalamos en C:\DJGPP (quizá sea lo mejor para no complicarse). Importante: No lo instales en ninguna carpeta llamada DEV, ni c:\dev, ni d:\dev, en ninguna unidad.

Si tienes la versión 1.x instalada, es mejor borrarla entera (mezclar programas v1.x con v2 puede dar muchos problemas). El único programa v1.x que se debería conservar es el go32.exe.

2.- Copia los ficheros que te has bajado al directorio (o carpeta) de instalación. En nuestro caso C:\DJGPP.

3.- Ahora tienes que descomprimir los ficheros que te has bajado. Para descomprimir puedes usar el winzip (si tienes win95/98/2000), puedes usar el programa pkunzip, o si no usar el unzip386 que viene con el djgpp.

Si usas winzip marca la casilla 'use folder name' para que conserve la estructura de directorios. Descomprime los zip en el directorio que has creado para la instalación (por ejemplo C.\DJGPP).

Si usas pkunzip o unzip386 debes entrar en el directorio de instalación. Ahora descomprime los ficheros zip en ese directorio, conservando la estructura de directorio. Por ejemplo para el fichero djdev203.zip:

	pkunzip -d djdev203
o:
	unzip386 djdev203

Los ficheros comprimidos ya no son necesarios, han cumplido su misión, si quieres ahorrar espacio puedes borrarlos. Recuerda siempre guardar una copia en disquetes o cdrom, nunca se sabe si tendrás que volver a instalar.

4.- Ahora tenemos que hacer cambios en el fichero AUTOEXEC.BAT. Este fichero se encuentra en C:\. Edítalo y añade las líneas siguientes (esto vale si lo instalas en c:\djgpp, si no tienes que poner el directorio que has elegido):

	set DJGPP=C:\DJGPP\DJGPP.ENV
	set PATH=C:\DJGPP\BIN;%PATH%

5.- Ahora deberías reiniciar el ordenador para que se activen los cambios hechos en el autoexec.bat (es lo mejor) o teclear estas dos instrucciones en la línea de comandos en una sesión DOS (si eres impaciente).

6.- Una vez reiniciado ejecuta el programa go32-v2.exe sin argumentos (si estas en windows ejecutalo en una ventana DOS):

	go32-v2

Debería decirte cuánta memoria DPMI y espacio de swap puede usar DJGPP en tu sistema. Saldría algo parecido a esto:

	DPMI memory available: 8020 Kb
	DPMI swap space available: 39413 Kb

(Los números que saldrán variarán dependiendo de la cantidad de memoria RAM instalada en tu sistema, el espacio en disco disponible y el sevidor DPMI). Si go32-v2 indica menos de 4 MBytes de memoria DPMI, lee la sección 3.8 de la FAQ. Si tienes más que esa memoria pero quieres el máximo rendimiento de tu sistema, lee esa sección igualmente).

Pues ya está. Ya podemos meternos de lleno en el mundo de la programación en C con nuestro nuevo compilador.

[Arriba]

Creación de programas (Compilación)

Vamos a ver primero cómo compilar un sencillo programa ('hola mundo' estará bien). Es interesante que entiendas esto primero para saber cómo funciona el compilador. Luego puedes usar un IDE, que es un entorno de desarrollo (como por ejemplo Turbo Pascal o Borland C) para hacer el trabajo más cómodo. Existe uno muy bueno para principiante (y para profesionales) llamado Rhide.

Para este ejemplo necesitas un editor de texto: el edit del DOS o el block de notas del Windows estarían bien. Crea un fichero con el editor y copia el siguiente código:

#include <stdio.h>

 int main()
         {
         printf( "Hola mundo\n" );  
         return 0;
         }

Llámalo myfile.c. Puedes guardarlo en el directorio que quieras, no tiene por qué estar dentro del directorio DJGPP. Puedes guardarlo por ejemplo en un directorio llamado misprog (c:\misprog).

Ya tenemos el fichero fuente, ahora sólo hace falta compilarlo. Para compilar nuestro programa usamos el GCC. Este es un compilador de línea de comando, al que tienes que llamar desde la línea de comandos del DOS. Se encuentra en el subdirectorio 'bin' del directorio donde hemos instalado djgpp.

Compilación de un programa C con un único fichero fuente

Vamos a compilar nuestro fichero fuente. Desde el directorio donde tenemos guardado myfile.c (por ejemplo c:\misprog) tecleamos:

	gcc myfile.c -o myfile.exe 

Si todo va bien (debería hacerlo) aparecerá en ese directorio el programa myfile.c listo para ser ejecutado. Perfecto, ya tenemos nuestro primer programa.

Compilación de un programa C que usa alguna biblioteca (o librería)

Ahora vamos a suponer que nuestro programa usa la biblioteca (librería) 'lib/libm.a' (el anterior no la usa). Para compilarlo haríamos:

	gcc myfile.c -o myfile.exe -lm

La opción -lm enlaza con la librería 'lib/libm.a'. La opción -lm se pone al final.

Compilar un programa con varios ficheros fuente

1.- Crear Ficheros objeto:

Para compilar un fichero de código fuente de C o C++ y dejarlo como fichero objeto, usa la siguiente línea de comando:

	gcc -c -Wall myfile.c  (para código fuente C)
  o
	gcc -c -Wall myfile.cc (para código fuente C++)

Con esto obtienes el fichero myfile.o. La opción '-Wall' activa muchos mensajes de aviso (warnings) que son especialmente útiles para nuevos usuarios de GCC. También se pueden usar otras extensiones, comp .cpp (ver sección 8.4 de la FAQ).

2.- Enlazar ficheros objeto

Para enlazar varios ficheros objeto en un programa ejecutable, usa algo parecido a esto:

	gcc -o myprog.exe mymain.o mysub1.o mysub2.o

Con esto obtienes myprog.exe que ya puede ser ejecutado.

Si en vez de un programa C, tenemos un programa C++, usa algo como esto:

	gxx -o myprog.exe mymain.o mysub1.o mysub2.o

gxx buscará automáticamente las bibliotecas C++, de manera que no tienes que incluirlas en la línea de comando.

3.- Compilación y enlazado en un solo paso

Puedes combinar los pasos de compilación y enlazado de la siguiente manera:

	gcc -Wall -o myprog.exe mymain.c mysub1.c mysub2.c

Puedes encontrar más información de las opciones de GCC en la documentación on-line. Para leerla instala el paquete Texinfo (txi390b.zip,ver la sección documentación on-line) y ejecuta:

	info gcc invoking

[Arriba]

Debugging (Depuración)

Para depurar un programa antes hay que compilar su código fuente usando la opción '-g':

	gcc -c -Wall -g mymain.c
	gcc -c -Wall -g mysub1.c
	gcc -c -Wall -g mysub2.c

y luego enlazarlo también con la opción '-g':

	gcc -g -o myprog.exe mymain.o mysub1.o mysub2.o

Luego ejecuta tu programa con el debugger (depurador):

	fsdb myprog.exe
o
	gdb myprog.exe
o
	edebug32 myprog.exe

(Tendrás que conseguir el fichero gdb416b.zip si quieres depurar con GDB). FSDB funciona a pantalla completa y tiene pantalla de ayuda a la que se accede pulsando F1. GDB viene con documentos 'Info' (ver más abajo) que se pueden leer con info.exe. Edebug32 es un depurador poco usado; escribe h para obtener ayuda.

[Arriba]

Documentación On-Line

La documentación OnLine es aquella que se consulta directamente sobre el ordenador, que no está en papel.

La mayor parte de la documentación On-line está organizada en un formato hipertexto especial usado por el proyecto GNU. Cada paquete viene con su documentación que son los ficheros con extensión .inf (el Readme.1st dice .iNN) y que se descomprimen en el subdirectorio info/ de tu directorio DJGPP. Para hojear estos documentos, consigue el fichero txi390b.zip, y ejecuta info.exe. Si no sabes cómo usar Info, pulsa '?'.

[Arriba]

Compatibilidad con la versión 2.00

Si te actualizas desde la versión 2.00 de DJGPP a la versión 2.01, deberías reinstalar todos los paquetes que utilices. Debido a los diferentes métodos que usa V2.01 para manejar líneas de comando largas (y nombres de fichero largos bajo Win95), mezclar programas V2.00 con programas V2.01 puede hacer muy difícil depurar problemas. Ver la sección 16.6 de la FAQ para más información.

[Arriba]

Compatibilidad con la versión 1.x

Los binarios compilados bajo V1.x pueden usarse para aplicaciones para las cuales no hay versión V2. Los programas V1 no pueden ejecutar programas V2 (pero sí al revés), así que no intentes, por ejemplo, usar Make v1.x para ejecutar el compilador v2.0.

[Arriba]

Entorno de desarrollo (IDE)

Un entorno de desarrollo es un programa que se encarga de todas las fases del desarrollo: edición, generación de makefiles, compilación y depuración.

Edición: el programa debe servir como editor de textos y estar orientado a la programación.

Generación de makefiles: cuando tenemos varios ficheros fuente es conveniente que el ide genere automáticamente el makefile (el fichero que da instrucciones al compilador sobre lo que debe hacer).

Compilación: el ide debe permitir compilar y ejecutar el programa que estamos desarrollando sin necesidad de salir al DOS.

Depuración: es conveniente que depure los programas y nos muestre los errores y warnings que se produzcan.

El IDE no funciona sólo, necesita a los programas DJGPP, es tan sólo una herramienta que nos hace más facil trabajar con todos los programas que hacen falta. Si te bajas sólo el IDE no funcionará nada.

No es estrictamente necesario trabajar con un entorno de desarrollo, pero es muy conveniente (cómodo sobre todo).

Actualmente, DJGPP no viene con un entorno de desarrollo integrado propio. Puedes usar cualquier editor que pueda ejecutar programas DOS y examinar su salida, para que haga las veces de IDE. Mucha gente que trabaja con DJGPP usa una versión DOS de GNU Emacs (está disponible en el mismo sitio donde conseguiste DJGPP). Emacs es un editor muy potente (tiene incorporado un lector Info, de forma que puedes leer la documentación DJGPP sin salir del editor), pero muchos otros editores libres pueden servir como IDE. La única tarea que estos editores (incluído Emacs) no pueden realizar es ejecutar un debugger a ventana completa.

[Arriba]

Entorno RHIDE

Si estás acostumbrado a entornos del estilo Borland C (para DOS) o Turbo C existe un IDE específico para DJGPP llamado RHIDE. Tiene auto-indentación, llama automáticamente al compilador DJGPP, genera los Makefiles automáticamente (lo que facilita la vida a los principiantes) y facilita el acceso a la documentación OnLine de DJGPP. También incorpora la posibilidad de depurar (debug) programas. Dado que RHIDE es muy reciente se están haciendo revisiones y arreglos todavía. Sin embargo yo lo estoy usando y no me ha dado ningún problema.

Puedes encontrarlo en la página del DJGPP pero también en (Ultimas versiones de Rhide):

http://ieva05.lanet.lv/~pavenis/rhide.html

http://www.tu-chemnitz.de/~sho/rho/rhide.html

Consigue el archivo rhide*b.zip e instálalo en tu directorio djgpp como se indica más arriba.

Para ejecutarlo simplemente entra en tu directorio de programas (por ejemplo c:\misprog) y teclea rhide desde DOS. Se abrirá el entorno de desarrollo. Para crear un programa entra en el menu 'File' -> 'New'. Escribe el código fuente de tu programa. Una vez que hayas acabado entra en el menu 'Run' -> 'Run' o pulsa directamente CTRL-F9 para compilar el programa.

[Arriba]

[Anterior] [Siguiente] [Contenido]

© Gorka Urrutia, 1999-2004
cursoc@elrincondelc.com
www.elrincondelc.com