DJGPP Readme.1st (v2.01)



Contenido:


Dónde conseguir DJGPP

En Internet:

Puedes encontrar el DJGPP en:

http://www.delorie.com/djgpp/

Tienen un apartado en el que te indican qué ficheros debes bajarte según lo que quieras hacer. Por ejemplo, si sólo quieres compilar programas de C, no necesitas los ficheros relacionados con C++.

Ficheros incluidos en la distribución

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

Ficheros necesarios para empezar

Para compilar programas en C: djdev201.zip
gcc2721b.zip
bnu27b.zip
v2/
v2gnu/
v2gnu/
Si también quieres compilar C++: gpp2721b.zip
lgp271b.zip
v2gnu/
v2gnu/
Manuales (ejecutar con info): txi390b.zip v2gnu/

Los directorios que indico son los que se indican en el fichrero readme.1st que venía en DJGPP, pero cuando yo lo cogí estaban en v2apps. Así que si no lo encuentras en un directorio no te desesperes y busca en los otros. Otra cosa 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.

También puede resultar interesante bajarse mak375b.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.

Para más información descárgate también el fichero faq210b.zip (la FAQ completa) y lee el capítulo 4.

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

Lo siguiente es lo mínimo que los nuevos usuarios deberían saber para manejar DJGPP.

1.- Crea un directorio donde instalar DJGPP, por ejemplo C:\DJGPP. Si tienes la versión 1.x instalada, es mejor borrar los contenidos de su directorio 'bin/' o muévelo a otro directorio (que no esté en tu PATH), y borra todo lo demás de esa instalación. (Algunos de los problemas que tuvieron usuarios de DJGPP v2 fueron causados por mezclar programas de la v2 con la v1.x). El único programa v1.x que se debería conservar es el go32.exe.

2.- Descomprime los ficheros zip en ese directorio, conservando la estructura de directorio. Por ejemplo:

	pkunzip -d gcc2721b
o:
	unzip386 gcc2721b

Si usas winzip marca la casilla 'use folder name' para que conserve la estructura de directorios.

3.- Después de descomprimir todos los zip que te interesan, dale a la variable de entorno DJGPP el valor DJGPP.ENV (DJGPP.ENV es un fichero de configuración que se coloca en el directorio DJGPP). Añade el directorio BIN de DJGPP a tu PATH. Suponiendo que hallas instalado en el direcotiro C:\DJGPP, deberías poner estas dos líneas en tu fichero autoexec.bat:

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

Ahora deberías reiniciar el ordenador o teclear estas dos instrucciones en la línea de comandos en una sesión DOS (si eres impaciente).

4.- Ejecuta el programa go32-v2.exe sin argumentos:

	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 sistem, 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 de C.

Compilar programas

GCC es un compilador de línea de comando, al que tienes que llamar desde la línea de comandos del DOS.

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

Veamos cómo compilar un programa C cuyo código fuente está todo en un único fichero. Supongamos que ese fichero se llame myfile.c y que usa la biblioteca (librería) 'lib/libm.a'. 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

Entorno de desarrollo (IDE)

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 de GNU Emacs portada a DOS (está disponible en el mismo sitio donde conseguiste DJGPP). que puede ser compilada con 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 mucho 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.

Hace poco ha salido un IDE específico para DJGPP llamado RHIDE. Es del estilo del Turbo-C, 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.

Ultimas versiones de Rhide:

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

Debugging (Depurar)

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

Lo siguiente no lo traduzco, por que no se lo que es eso del COFF y puede salirme una traducción incorrecta. Así que lo dejo en inglés. De todas formas, al final dice que no importa si no lo entiendes:

(Note that with v2.01 of DJGPP, it is no longer necessary to compile
to a raw COFF output by omitting the `.exe' from the filename in order
to debug programs.  The new v2.01 debuggers are capable of reading an
executable as well as the raw COFF.  If you don't understand this,
don't worry about it.)

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.

Documentación On-Line

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 '?'.

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.

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.

COPYRIGHT

DJGPP V2 is Copyright (C) 1995 by DJ Delorie. Some parts of libc.a are Copyright (C) Regents of the University of California at Berkeley.

GNU software (gcc, make, libg++, etc) is Copyright by the Free Software Foundation.

DJGPP V2's copyright allows it to be used to produce commercial applications. However, if you include code or libraries that are not part of djgpp (like gnu's libg++) then you must comply with their copyrights. See Chapter 19 of the FAQ for more details.

Traducido por: Gorka Urrutia (5 marzo 1999)
Revisado por: