lunes, mayo 04, 2009

Te ha pasado que al compilar un programa bajo Linux, te lanza un mensaje como el siguiente descrito:

maximi89@Maximiliano:/mnt/wine-1.1.20$ ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: in `/mnt/wine-1.1.20':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.


Esto se debe que al montar una partición, esta se monta con "noexec" o "users" esto evita que se ejecuten cosas en la computadora, esto es efectivo cuando se utiliza sobre una carpeta o partición de archivos temporales.
EL ERROR:
checking whether the C compiler works... configure: error: in `/mnt/wine-1.1.20':
configure: error: cannot run C compiled programs.

EL QUE LO PRODUCE:
cat /etc/fstab, a la línea
/dev/sdX1 /mnt/datoslinux ext3 rw,auto,users,noexec,dev 0 1

Solución, remover noexec, nousers y volver a montar la unidad, esto es todo para poder compilar cosas en nuestra computadora.
Les recuerdo que los cambios no se aplican inmediatamente, requiere que ustedes desmonten y monten nuevamente.



Opciones:

Esta es la parte del FSTAB mas importante y por lo tanto es muy extensible, aqui les dejo una pequeña tabla con nombre de la opcion y su explicación

rw: READ-WRITE. Con esto montamos la partición para que sea posible tanto leer como escribir en el dispositivo físico, esta opción es muy usada con dispositivos que permiten la escritura como por ejemplo los pendrive o los disquets, ya que sin esta opción, no podríamos guardar datos en dichos dispositivos.

ro: READ-ONLY. Con esta opcion hacemos que no se pueda escribir en el dispositivo, que tan solo se pueda leer.

exec: Permitir la ejecución de archivos ejecutables.

noexec: Impide la ejecución de cualquier archivo en el dispositivo en el que esta opción sea activada, esta opción suele ser muy útil cuando en una misma maquina diversos usuarios tienen acceso a un mismo dispositivo y no queremos que estos puedan ejecutar archivos en los dispositivos, con esto ganamos en seguridad, ya que impedimos que los usuarios puedan ejecutar cualquier tipo de archivo “maligno” a través del cual lo que realmente quiere conseguir es escalar privilegios en el sistema, por ejemplo.

nodev: con esto impedimos que puedan usarse nodos de dispositivo en el sistema de archivos, es decir, con esta opción impedimos que se interpreten los dispositivos especiales de bloques y de caracteres presentes en el dispositivo.

dev: Opción contraria a nodev, es decir, al activar esta opción permitimos que puedan usarse nodos de dispositivo en el sistema de archivos, o, lo que es lo mismo, que se interpreten como tal los dispositivos especiales de bloques y de caracteres presentes en el dispositivo.

auto: Con esta opción hacemos que el dispositivo que la contenga sea iniciado SIEMPRE que se inicie el sistema, es decir, cada vez que este sea encendido. Es decir que sera montado siempre.

noauto: Esta es la opción contraria a auto, con ella hacemos que el dispositivo no sea montado al iniciarse el sistema, y tan solo sera montado en el momento en el que le vayamos a dar uso, esta opción suele ser usada con dispositivos como las disqueteras, cd-roms, pendrives…, es decir, todos aquellos dispositivos que no es necesario que se monte con el arranque del sistema.

user: Permite a cualquier usuario del sistema montar o desmontar un dispositivo físico sin necesidad de ser root, esta opción es muy útil para dispositivos de uso frecuente, como cd-roms o disquetes. Pero tambien tenerse en cuenta, que el usuario que montó el dispositivo, solo el mismo usuario podrá desmontar el dispositivo.

nouser: índica que cualquier persona puede usarlo, no solo el que lo montó

users: indica que cualquier usuario puede montar y cualquiera también, puede desmontar el dispositivo.

suid: indica que el permiso tenga efecto para los ejecutables presentes en el dispositivo. La opción opuesta es nosuid.

owner: indica que el primer usuario distinto de root conectado al sistema localmente tiene derechos a montar y desmontar el dispositivo (se adueña de este).

uid=Valor: Con esta opción indicamos que tan solo el usuario que posee el Valor especificado tenga el control sobre los archivos del dispositivo.

gid=Valor: Con esta opción indicamos que tan solo el grupo que posee el Valor especificado tenga el control sobre los archivos del dispositivo.

async: Con esto hacemos que las operaciones que realicemos no se hagan de forma síncrona, es decir, en el mismo momento en que las realizamos/pedimos, si nos que pueden ser realizada mas adelante.

sync: Es la opción contraria a async, con esta opción conseguimos que todas las modificaciones que hagamos sean “in situ” es decir, realizadas en el mismo momento en que sean realizadas.

force: Con esta opción se saltan errores y fuerza el montado, usar solamente con particiones que sepas que estan en buen estado, y ovbiamente usar con cuidado

defaults:Es la unión de las siguientes opciones: suid rw dev auto exec nouser y async, con esta opcion usualmente todo funciona.

Syntaxis:

En el uso de opciones se pueden usar mas de 1 separadas por comas (,)

Ejemplo:

rw,nouser,force

dump y pass

Estos son los últimos 2 dígitos después de cada linea del FSTAB y significan lo siguiente

dump: Esta opción solo puede poseer el valor 0 o 1, en ella se guardan los errores en tiempo de sistema que ha reportado el sistema de archivos. Al activarlo (1) se hará un backup con las opciones, creando backup por si surge algún tipo de problema, lo normal es tenerlo desactivado (0), ya que rara vez se produce un error.

pass: Esta opción al igual que la anterior tan solo puede poseer el valor 0 o 1. Si la activamos (1) el sistema realizara una pasada cada X desmontadas o si el dispositivo a sido desmontado incorrectamente para comprobar su integridad. En caso de estar desactivado (0), el sistema no realizara nunca ninguna pasada para comprobar la integridad del dispositivo físico, por ello es recomendable tenerlo en activado (1).

syntaxis:

0 o 1 (desactivado o activado respectivamente)

ejemplo

0 0 (dump y pass desactivado)




Fuente:
http://www.unix.com/unix-advanced-expert-users/33227-cannot-run-c-compiled-programs.html
http://kernelerror.net/linux/fstab-a-fondo/
http://docs.hp.com/en/B2355-90696/fstab.4.html

1 comentario:

b@cHo dijo...

Hola hola, habla b@cho (el que escribio Esta entrada
Y pues tu blog me parece con muy buen contenido, y me preguntaba si te interesaría un intercambio de enlaces con Kernel Error

Si es así por favor contactame a bacho [arroba] Kernelerror.net

Saludos y espero tu mensaje :D