###### # ##### ###### ###### # # # # # # # # # # # # # # # # # # # # # #### ###### ###### # # # # # # # # # # # # # # # # ###### ##### ##### # # DJ Delorie Traducido por Gorka Urrutia Este el es fichero README.1ST de la versión 2.03 de DJGPP ************************************************************************* * Este documento contiene información acerca de como obtener, instalar * * y usar DJGPP. Por favor léalo *completamente* antes de pedir ayuda * ************************************************************************* DJGPP es un entorno no propietario para desarrollar software de 32bits (modo protegido) en C/C++ bajo MS-DOS. La página web del DJGPP es: http://www.delorie.com/djgpp/ El estado del proyecto y otras informaciones (documentos online, FAQ, archivos del correo) están disponibles a través de las páginas del DJGPP. Las discusiones sobre DJGPP y preguntas acerca del su uso o características se hacen a través del djgpp news group (publicar en comp.os.msdos.djgpp) y la lista de correo (enviar mensaje a , suscribir a través de ). Mire en la página web para información acerca de las últimas versiones de los paquetes de DJGPP. La información sobre la versión está en el directorio manifest/*.ver dentro de cada fichero zip. Hay otros tutoriales alternativos (generalmente mejores) sobre conseguir, configurar y usar djgpp disponibles en la Red: http://www.delorie.com/djgpp/doc/ LA DISTRIBUCIÓN *************** La distribución DJGPP consta de unos pocos subdirectorios. Cada subdirectorio tiene un directorio llamado 00_index.txt que contiene la descripción de cada fichero en ese directorio. Los ficheros zip con una 'b' al final incluyes los binarios y la documentación on-line. En el momento de escribir este fichero, los distintos paquetes son: FAQ Un pequeño documento que indica qué otros documentos deberías leer (incluyendo la FAQ -preguntas más frecuentes- completa). v2/ unzip386 Un programa de libre distribución para descomprimir archivos (como PKUNZIP). djdev203 DJGPP V2 Kit de desarrollo y Runtime djlsr203 DJGPP V2 Código fuente de las bibliotecas base. djtst203 DJGPP V2 Test Programs (for testing the C library) djcrx203 DJGPP V2 Cross-to-DOS Compiler Support Files (from djlsr/djdev) djtzn203 DJGPP V2 Timezone Files djtzs203 DJGPP V2 Timezone Sources faq*b La FAQ completa en distintos formatos (Info, ASCII, HTML...) faq*s The Texinfo sources of the FAQ and tools to generate all the different formats of the FAQ frfaq* DJGPP FAQ en Francais v2apps/ (distintas aplicaciones hechas por y para DJGPP, como RHIDE y TeX) v2gnu/ (conjunto de programas FSF/GNU -Free Software Foundation- pasados a DJGPP, como gcc o binutils) v2tk/ (varios toolkits para usar con DJGPP, como Allegro o libsocket) v2misc/ csdpmi* CWSDPMI, Charles Sandmann's free DPMI server binaries and docs mlp* ML's Executable File Packer Binaries ("djp") pmode* PMODE stub for djgpp V2 wmemu* WM's 387 emulator binaries for DJGPP V2 (and other miscellaneous things to use with DJGPP) COMENZANDO ********** La información de abajo es lo mínimo que los nuevos usuarios deberían saber para empezar en DJGPP. Por favor lea la documentación DJGPP y la FAQ para más detalles. Se anima a los nuevos usuarios a leer la FAQ entera. (FAQ=Frequently Asked Questions. Es una lista con las preguntas más frecuentes) Qué descargar ------------- En http://www.delorie.com/djgpp/zip-picker.html tiene un formulario que le indica qué ficheros debe descargar. En general, descargue sólo la distribución binaria, la mayoría de la gente no necesita la distribución con el código fuente. Para crear programas C, necesitará djdev203.zip, gcc*b.zip, y bnu*b.zip. Para C++ necesitará también gpp*b.zip. Para leer los manuales en línea, descargue txi*b.zip y ejecute "info". Si no tiene un servidor DPMI instalado, necesitará csdpmi*b.zip. (Windows, QDPMI, 386max, NWDOS, OpenDOS, OS/2, Win/NT y Linux DOSEmu proveen servicios DPMI, así que no necesitará CWSDPMI en esos entornos.) Para más detalles, descargue faq*b.zip (la FAQ completa) y lea el Capítulo 4, "Qué descargar y dónde". Instalación ----------- 1. Cree un directorio para DJGPP, digamos C:\DJGPP (AVISO: NO instale DJGPP en el directorio C:\DEV, D:\DEV, etc..., ni en ninguno de sus subdirectorios: ¡no funcionará! Vea la FAQ para más detalles. Si tiene la versión 1.x instalada, es mejor borrar todo el contenido de su subdirectorio 'bin/' muévalo a otro directorio (que no esté en su PATH), y borre todo lo demás de esa instalación. (Algunos de los problemas de los que informaron algunos usuarios DJGPP v2 fueron causados por mezclar programas v2 con viejos programas v1.x.) El único programa de v1.x que debería conservar es 'go32.exe'. 2. Descomprima los ficheros zip desde ese directorio, conservando la estructura del directorio. Por ejemplo: pkunzip -d djdev202 o unzip386 djdev202 En Windows 9X, use un programa descompresor que acepte nombres de fichero largos. Las últimas versiones de Unzip de InfoZip y PKUnZip, así como WinZip, aceptan nombres largos. Unzip32.exe disponible en sitios DJGPP también acepta nombres largos. Una forma de asegurarse de que ha conservado los nombres largos es buscar el fichero include/sys/sysmacros.h: si en su lugar el nombre que aparece es sysmacro.h , su programa descompresor NO acepta nombres largos, y tendrá que buscarse otro. 3. Después de descomprimir todos los ficheros zip, apunte la variable de entorno DJGPP al fichero DJGPP.ENV que está en su directorio principal de DJGPP, y añada su subdirectorio BIN a su PATH. La forma exacta de establecer estas variables depende de su sistema operativo: * Para sistemas Windows 98: - Haga click en INICIO; - Seleccione: Programas->Accesorios->Herramientas del Sistema->Información del Sistema; - Haga click en Herramientas en la barra de menú, luego elija "Configuración del Sistema"; - Haga click sobre el tabulador AUTOEXEC.BAT para editar ese fichero como se indica más abajo. * Para sistemas Windows NT: - Haga click con el botón derecho en "My Computer", y selecciones "Properties"; - Haga click en el tabulador "Environment"; - Edite la variable de sistema PATH para añadir el subdirectorio 'bin' de DJGPP; - Añada una nueva variable llamada DJGPP y dele como valor la ruta completa del fichero DJGPP como se indica más abajo. * Para todos los demás sistemas (DOS, Windows 3.X and Windows 95): utilice cualquier editor de texto, por ejemplo el EDIT, para editar el fichero AUTOEXEC.BAT que está en el directorio raíz de su disco de arranque (normalmente, C:). Utilice el método que utilice, suponiendo que su instalación DJGPP se encuentra en C:\DJGPP, los valores de las variables de entorno DJGPP y PATH podrían ser establecidas así: set DJGPP=C:\DJGPP\DJGPP.ENV set PATH=C:\DJGPP\BIN;%PATH% 4. Reinicie el ordenador. De esta forma se asegura que las dos líneas que ha añadido al autoexec.bat surtirán efecto (En Windows NT, los cambios se activan inmediatamente, así que no necesitará reiniciar). 5. Ejecute el programa go32-v2.exe sin argumentos: go32-v2 Debería informar acerca de cuánta memoria DPMI y espacio swap (de intercambio) puede usar DJGPP en su ordenador, algo como esto: DPMI memory available: 8020 Kb DPMI swap space available: 39413 Kb Los números variarán dependiendo de la cantidad de RAM instalada en su sistema, el espacio disponible en disco y el servidor DPMI. Si go32-v2 informa de que hay menos de 4 MBytes de memoria DPMI, lea la sección 3.9 de la FAQ. (Si tiene más de eso, pero quiere un funcionamiento óptimo de sus sistema, léala igualmente). Compilación ----------- GCC es un compilador de línea de comando, que usted invoca desde la línea de comandos del DOS. Para compilar y enlazar un programa C de único fichero, use algo parecido a esto: gcc myfile.c -o myfile.exe -lm El -lm enlaza con la biblioteca lib/libm.a (matemáticas trigonométricas) si se necesita. (La orden de enlace es importante, así que si necesita libm.a, ponga siempre '-lm' al final de la línea de comando). Para compilar un fichero fuente C o C++ en un fichero objeto, use esta línea de comando: gcc -c -Wall myfile.c (for C source) o gcc -c -Wall myfile.cc (for C++ source) Esto genera el fichero objeto myfile.o. La opción '-Wall' activa muchos mensajes útiles que son especialmente beneficiosos para nuevos usuarios de GCC. (Otras extensiones C++, como .cpp, también se aceptan, vea la sección 8.4 de la lista para más detalles). Para enlazar varios ficheros objetos C en un programa ejecutable, use una línea de comando como esta: gcc -o myprog.exe mymain.o mysub1.o mysub2.o Esto genera 'myprog.exe' que puede ser ejecutado desde la línea de comandos del DOS. Para enlazar un programa C++, use gxx en lugar de gcc, de esta forma: gxx -o myprog.exe mymain.o mysub1.o mysub2.o Esto buscará automáticamente las bibliotecas C++, así que no necesitará incluirlas en la línea de comando. También puede combinar los pasos de compilación y enlazado, de esta forma: gcc -Wall -o myprog.exe mymain.c mysub1.c mysub2.c Para más infromación acerca de la lista completa de las opciones de GCC vea la documentación on line de GCC. Para leerla instale el paquete Texinfo (txi*b.zip, vea la sección 'documentos On-line' más abajo) y teclee lo siguiente: info gcc invoking Entorno de Desarrollo (también llamado IDE) ------------------------------------------- Actualmente, DJGPP no viene con un entorno integrado propio. Usted es libre de elegir cualquier editor que pueda ejecutar programas DOS y capturar su salida, para que funcione como IDE. Mucha gente que trabaja con DJGPP usa una versión DOS de GNU Emacs (está disponible en el directorio v2gnu) que puede ser compilado con DJGPP. Emacs es un potente editor (por ejemplo tiene incorporado un visor de Info, así que puede ver la documentación DJGPP sin salir del editor), pero muchos otros editores libres pueden servir como IDE. La única tarea que estos editores (incluido Emacs) no pueden hacer es ejecutar un depurador en una sesión a pantalla completa. Un editor específico para DJGPP llamado RHIDE ha sido recientemente publicado y está ahora disponible para los usuarios DJGPP. Tiene una interfaz similar al Turbo C, auto indentation, generación automática de los Makefiles, llamada automática al compilador DJGPP, y fácil acceso a la documentación DJGPP. RHIDE también incorpora un depurador integrado. Dado que RHIDE es muy reciente se están haciendo revisiones y arreglos todavía; visite http://www.tu-chemnitz.de/~sho/rho/rhide.html para actualizaciones. Depuración ---------- Para depurar un programa, primero debe comilar su código fuente con la opción '-g': gcc -c -Wall -g mymain.c gcc -c -Wall -g mysub1.c gcc -c -Wall -g mysub2.c y luego enlace con la opción '-g' también: gcc -g -o myprog.exe mymain.o mysub1.o mysub2.o (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 ejecute su programa con el depurador: fsdb myprog.exe o gdb myprog.exe o edebug32 myprog.exe (Necesitará gdb*b.zip si quiere depurar con GDB). FSDB tiene su propia 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; escriba h para obtener ayuda. Documentación en línea ---------------------- 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 .iNN y que se deben descomprimir en el subdirectorio info/ de su directorio DJGPP. Para ver estos documentos, instale el fichero txi*b.zip, y ejecute info.exe. Si no sabe cómo usar Info, lea la siguiente sección. Leyendo la documentación, o Curso de Emergencia sobre Info ---------------------------------------------------------- Lo siguiente no pretende ser una completa guía sobre el uso de Info, tan sólo un punto de inicio que le permita moverse por los documentos y buscar eficientemente asuntos específicos. Para leer un manual con Info, teclee "info" seguido del nombre del manual. Por ejemplo: - teclee "info libc" para leer los docs de la biblioteca de C; - teclee "info libc alphabetical printf" para leer la documentación de la funcuón 'printf' de la biblioteca. - teclee "info gcc" para leer el manual de GCC, el compilador GNU C; - teclee "info faq" para leer la FAQ de DJGPP; - teclee "info make" para leer el manual de la utilidad Make; - teclee "info" para ver un menú con todos los manuales. Para salir de Info, pulse 'q' (q de Quit). Una vez dentro de Info, puede moverse con las teclas habituales de movimiento del cursor: Flecha-arriba, Flecha-abajo, Página-abajo, Página-arriba, etc. Para leer el manual de manera ordenada, pulse ESPACIO cada vez que termine de leer la pantalla. Esto le guiará a través de la secuencia completa de capítulos y secciones del manual. Los menús están indicados por una línea que dice "* Menu:". Las líneas siguientes que empiezan con un "*" son elementos del menú. Para seleccionar un elemento, sitúe el cursor al principio de la línea, justo debajo del asterisco '*', y pulse [Enter]. Los enlaces hipertexto están marcados por "* Note". Para seguir la referencia, sitúe el cursor en el asterisco, y pulse [Enter]. Para regresar de donde vino, pulse 'l' (la letra ele minúscula), que viene de 'last' (último). Para buscar rápidamente sobre un asunto en concreto en el índice del manual, pulse 'i' (de index), escriba el asunto, y pulse [Enter]. Puede teclear sólo una parte del asunto y pulsar TAB para ver si el índice incluye alguna entrada que empiecen por lo que ha tecleado. El TAB hace que Info intente completar lo que usted ha tecleado usando las entradas del índice disponibles. Si Info emite un pitido o la pantalla centellea cuando pulsa TAB, quiere decir que no hay entradas que empiecen por lo que ha tecleado; borre lo escrito (usando la tecla Retroceso) y pruebe con un nombre diferente para lo que está buscando. Si hay alguna entrada que empiece por lo que ha tecleado, Info lo completará. Si la entrada completada se parece a lo que usted busca, pulse [Enter] para ir a la sección que trata sobre ello; si no, pulse TAB de nuevo para ver otras opciones. Si alguna parece correcta, teclee suficiente texto para hacerla única y pulse [Enter]. Si ninguna de las opciones parece apropiada, borre lo que ha escrito y pruebe con otro nombre. -------------A partir de aquí está en inglés--------------- For example, suppose you get the infamous message "ld.exe: cannot open -lstdcxx: No such file or directory" and you want to check what the FAQ has to say about that. You start Info ("info faq"), then press `i' and type "c a n TAB" (without the blanks). The first TAB just capitalizes "can" into "Can", so you know there are some index entries which begin with "Can", and type TAB again. Now you will see a list of potential completions. Alas, none of them seems to be relevant for this problem, so you use BackSpace to delete "Can" and then type "-lstd" followed by TAB. Now Info has only one choice so it completes your search and this time it's exactly what you are looking for! Finally, press [Enter] to go to that node and read what the FAQ has to say about this subject. If you prefer to look up the subject in the index yourself, page through the top-level menu of the manual until you find a menu entry that says something like "* Concept Index" or "* Command Index" or just "* Index", press [Enter] to go to the index, then browse it for any pertinent entries. An index is just a huge menu sorted in alphabetical order, so find an entry you are looking for, position the cursor at the beginning of its line, and press [Enter] to go to the relevant section. The library reference doesn't have an index, so search for functions either in the alphabetical list or in the functional categories. For example, library function `mktime' is in the "Time Functions" category, `random' is in the "Random Number Functions" category, etc. Sometimes the index search won't help you (because the indices cannot list everything). In this case, press `s' (for Search), type the text you want to find, and then press [Enter]. Info will search the entire manual for this string and position you at the first occurrence. To search for the next occurrence, press `s' and [Enter] again: Info will repeat the search. Finally, if you don't know in what manual to look for some subject, you can use the "--apropos" switch to cause Info to look for that subject in the indices of every installed manual. For example, suppose you have heard that DJGPP programs support file-name wildcards, but you don't know in which manual to look for their description. The following command will ask Info to print all the sections in every manual whose indices mention the string "wildcard": info --apropos=wildcard This will run for a while, and then print lines like these: "(kb)Features" -- Wildcards "(kb)Changes in 2.01" -- wildcards "(djgppfaq)Filename globbing" -- Filename wildcards expansion The text inside the quotes is the name of the manual and the section where the subject "wildcard" is discussed. To invoke Info in order to read the first entry above, type this: info --node="(kb)Features" Info has many more commands and options. To find out, from the command line type "info info". To find out even more, type "info info-standalone". Compatibilidad con V2.00 ------------------------ Si está usted actualizando desde la versión 2.00 de DJGPP, debería reinstalar completamente todos los paquetes que necesite usar. Dada la diferente forma que tienen las versiones 2.01 y posteriores de manejar los nombres largos, mezclar programas V2.00 con programas de versiones posteriores puede producir problemas difíciles de detectar. Lea la sección 16.6 de la FAQ para más información. Compatibilidad con V1.x ----------------------- Existing binaries compiled under DJGPP V1.x can be used for applications for which there is no v2.x version. V1 programs cannot run V2 programs (but v2 programs *can* run v1 programs), so don't try, say, using v1.x Make to run v2.x compiler. --- COPYRIGHT --- DJGPP V2 is Copyright (C) 1989-1999 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. There was a discussion a while ago on the DJGPP news group about the copyright of some of libc's functions. This copyright required that you mentioned the "University of California, Berkeley" in your distribution even if it only consisted of binaries, i.e. a compiled program. However, the Berkeley license has been changhed in July 1999, and you don't need to mention their copyright in your distribution anymore. The functions and files in libc that have the Berkeley copyright are listed here: from libc/ansi/time/ctime.c: asctime ctime gmtime localtime mktime tzset tzsetwall from libc/compat/stdlib/random.c: initstate random setstate srandom ============================================================================== Enjoy! DJ Delorie dj@delorie.com http://www.delorie.com/ Traducido por: Gorka Urrutia. gorkau@geocities.com Documentación DJGPP en castellano: http://www.geocities.com/g_urrutia/djgpp-cas.html