[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Consulta C++



From:           	Alejandro Bratti <abratti@guate.net>

	Hola. Debería responderte en persona por la pregunta de C (se sale un
poco del ámbito de la lista, a mi juicio), pero el resto de las preguntas son más
generales.

> Acabo de empezar a usar el linux y tengo un monton de dudas.  Una de
> ellas es saber como crear un ejecutable despues de haber compilado un
> archivo en c++ o c. Al compilarlo me da uno con extension .out y despues
> que se hace para correrlo.

	Mira. Todo eso lo pone en las páginas man (man gcc), y sobre todo en
las páginas del info (info gcc), pero te lo voy a decir (de todas maneras, para
otra vez, mejor nos acojemos al anglicismo "RTFM" -> Read The Fucking
Manual --- no te lo tomes en serio, eh? que es broma). "a.out" es por razones
históricas el nombre por defecto para el ejecutable. Si quieres cambiar eso, por
ejemplo pon:

	gcc -o prog_ejecutable programa.c

	Osea, por la opción -o y justo después el nombre del fichero
ejecutable. Para correrlo debes asegurarte de que los permisos son los
correctos, como eso suele estar bien por defecto, entonces es posible que no
puedas ejecutarlo porque no tienes el directorio "actual" en la variable de
entorno PATH, que es donde se ponen (por orden) todos los directorios que se
ha de revisar buscando los ejecutables. Como no se suele incluir el directorio
actual (señalado con un punto ".") por razones de seguridad que no vienen al
caso, entonces en lugar de:

	mimaquina:~/proyectos# ejecutable

escribe
	mimaquina:~/proyectos# ./ejecutable

	Anteponiendo "./" al nombre del ejecutable, estás obligando al bash a
saltarse la variable PATH e intentar buscar en el directorio especificado (. es el
nombre del directorio en que estás).

> Si tengo archivos fuentes de un programa, como se hace para compilarlos,
> y volverlos binarios para que me funcionen.

	Para compilar fuentes de un programa completo se suele usar el
fichero Makefile.

	Simplemete llégate al directorio en que esté ese fichero y ejecuta el
programa "make". Normalmente los programas incluyen también archivos
README o INSTALL (a veces ambos) en los que te informan sobre los pasos
a seguir para instalarlos. Como veo que eres nuevo en Debian, es mejor que
busques el programa ya compilado y metidito en un paquete .deb, puesto que
de esa manera el sistema Debian controlará mejor dónde tienes instaladas las
cosas y podrá desinstalarlas cuando ya no lo quieras.

> Como hago para funcionar el cdrom, el diskette??

	Ufff... Esto ya es algo más complejo. Para el disquete normalmente
basta con tener instalados los programas del paquete de las "mtools". Con
ellos dispones de una serie de comandos parecidos a los del MS-DOS:

	mdir
	mcopy
	mdel
	...

	Comprobarás que su uso es casi exactamente el mismo que para el
viejo DOS.
	Lo del CD-ROM... Bueno, posiblemente no hayas aprendido a montar
las unidades. En Unix en general (y en LiNUX en particular), cuando quieres
acceder a algo que no está en el soporte físico principal del sistema, entonces
tienes que "montar" el soporte donde está la información. "montar" (directo del
inglés "mount") es una operación mediante la cual añadimos toda la
información que hay, por ejemplo, en el CD-ROM de turno al árbol de
directorios del que dispones. Al tener un sistema Debian, deberías contar con
un directorio "/cdrom". Compruébalo. Si no lo tienes, hazlo tu mismo (siendo
root) de la siguiente manera:

	mimaquina:~# cd /
	mimaquina:/# mkdir cdrom

	De esa manera, tenemos un directorio "vacío" preparado para albergar
la información que haya en los cdrom (simplemente porque nosotros queremos
que el cdrom se ponga allí, no por otra cosa). Ahora está vacío, pero después
de montarlo:

	mimaquina:~# mount -t iso9660 /dev/hdc /cdrom

	Te explico:

	- La opción -t especifica el tipo de sistema de ficheros que vamos a
montar. Si fuera otra unidad de LiNUX, posiblemente el sistema sería "ext2", si
es una unidad con MS-DOS o Windows, posiblemente sea "fat" o "vfat". Como
la norma que define el formato de los CD-ROM es la iso9660, entonces ese es
el nombre que se le ha dado al sistema de ficheros en LiNUX.
	- /dev/hdc indica en qué "unidad" está mi CD-ROM. El LiNUX no es
como el DOS. En lugar de tener A, B, C, D..., nombra a los dispositivos por el
nombre que tiene su "controlador". Por ejemplo, el de la disquetera A (en MS-
DOS) en LiNUX lo controla el fichero /dev/fd0, de Floppy Disk 0 (tampoco es
este realmente, pero créetelo ahora que empiezas). Los de los dispositivos IDE
son:

	/dev/hda
	/dev/hdb
	/dev/hdc
	...

	Van por pares. hda y hdb son, respectivamente, el maestro y el
esclavo del controlador primario de IDE; hdc y hdd el maestro y el esclavo del
controlador secundario, etc.
	Normalmente, si tienes un disco duro y una lectora de CD-ROM,
entonces el CD será hdb o hdc. Pruébalo si no lo sabes.

	- por último, /cdrom, lo habrás adivinado ya, es el directorio del que va
a "colgar" el contenido del CD.

	Una vez ejecutada la orden "mount" con la configuración
correspondiente a tu máquina, verás que en el directorio "/cdrom" contiene
todo lo que hay en tu CD-ROM. No podrás sacar el CD de la lectora mientras
esté "montado". Ahora forma parte de tu sistema de ficheros LiNUX como si
hubiera estado ahí toda la vida.
	Si ejecutas "mount" sin ningún parámetro, obtendrás la lista de cosas
montadas.
	Una vez dejes de usarlo, puedes desmontar con una de las dos
siguientes órdenes:

	umount /cdrom
	umount /dec/hdc

	Refiriéndote al directorio en el que lo has montado, o al dispositivo del
que depende.

	Todo esto es válido también para disquetes (de hecho la mtools
montan y desmontan cada vez que hacen una operación), unidades SCSI,
unidades Iomega ZIP (la mayoría son realmente unidades SCSI, aunque no lo
sepas), etc, etc, etc...

	Bueno, espero no haberte aturullado demasiado.

--
Para que luego digan que UNIX no es arcaico :))
"Now it's a little known fact that Job's economic recovery
 was due in part to his use of Perl to manage his database.
 The following data was found recently on a laser-etched
 clay tablet [...]"

    Programming Perl (Larry Wall & Randal L. Schwartz)


Reply to: