Nombre Completo
Jaime Ferrer Sánchez
Buenas hace poco que he instalado linux en mi portatil y realmente es la 1º vez que lo utilizo por lo que no tengo ni idea de como manejarlo. Concretamente tengo la distribucion Ubunto y la version 7.04
Mi problema reside en que emacs no me compila. Yo escribo cualquier programa en C, y desde tool le doy a compile. Y me dice que: "no hay ninguna regla para construir el objetivo ".
Comentarios
Si el programa...
…que quieres compilar es un único fichero no necesitas tener un fichero Makefile.
Cuando ejecutes “Tools”->“Compile…” el cursor se irá al minibuffer (la línea de texto debajo de la barra de estado). En ese momento pone:
Simplemente escribe el nombre del fichero que quieres compilar pero sin la extensión, por ejemplo
miprogramay pulsa ENTER.Entonces
makesabe que para crear ese fichero que le pides (el binario) tiene que compilar un fichero fuente que tenga el mismo nombre. Cuando vea un fichero tal quemiprograma.csabe que tiene que utilizar el compilador de C para lograrlo, y voilá.Como verás, compilar con emacs tiene muchas ventajas respecto de la consola, entre ellas la de poder encontrar fácilmente los errores que detecte el compilador (simplemente pinchando con el ratón).
Y eso es todo, bienvenido al maravilloso (aunque al principio frustrante) mundo de GNU.
PD: Como te han dicho por ahí, es mejor que envíes las consultas a la lista de correo en lugar de a la web.
Realmente asi es como lo
Realmente asi es como lo hacia. Y la frase que puse en el post de arriba aparecia después de haberle puesto "mi programa" a la frase .....make -k
Por los consejos que me habeis dado y el enlace a la receta que han hecho tambien aquí, creo que realmente el problema resida en que no he puesto las librerias de c. Voy a trastear un poco más y si no consigo hacer nada, os pedire ayuda de nuevo en la lista de correo.
Solo los peces muertos siguen la corriente.
No tiene por qué ser por
No tiene por qué ser por las librerias. Si son estándar no hay que ponerlas.
El problema es que cuando le dices “Compile file” y te sale el make -k tu le das al Enter sin más. Osea, es como si ejecutas make -k en el terminal. El make busca un fichero Makefile, GNUMakefile o makefile en el mismo directorio que ese archivo y ejecuta la regla por defecto (la primera).
Otro posible error es que le des un nombre que no coincide exactamente con el del archivo .c (quitando la extensión). Entonces trata de buscar una regla con ese nombre en el Makefile.
Si el archivo .c es el único fichero fuente del ejecutable el make es suficientemente listo como para construir el ejecutable sin hacer un Makefile, siempre que le digas que quieres hacer un ejecutable con el mismo nombre que el .c (quitando la extensión).
Si tienes que añadir alguna biblioteca, o añadir más archivos fuente al ejecutable no te queda más remedio que hacer un Makefile. Por ejemplo, para añadir la biblioteca libreadline:
Si además el ejecutable tiene más de un archivo fuente:
Es muy importante seguir una serie de reglas para que sea fácil hacer el makefile:
Si se complica mucho la cosa (muchos subdirectorios, soporte de varias plataformas, bibliotecas dinámicas) te recomiendo automake/autoconf/libtool (receta pendiente?).
Bueno...
...tal vez sea un poco "brusco" meterse a usar emacs para editar y compilar proyectos... yo no compilo desde emacs, tengo un emacs abierto con mi código y compilo desde un terminal. De todas formas tu problema se deba porque no tienes un Makefile creado.
Crea un Makefile para tu proyecto: de esta forma automatizas la compilación y limpieza de tu directorio de trabajo. Incluso si tu proyecto es simple, el Makefile lo será más todavía (echa un ojo al articulo sobre make, en el recetario).
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------
Lo que es heavy heavy es
Lo que es heavy heavy es compilar C++ en el terminal...
Hay que echarle valor para leer errores de 10 líneas en los que hay 10 o 15 templates anidadas. Cuesta encontrar la línea del error.
Yo conozco gente que no usa emacs pa na excepto pa compilar. Pruebalo, te costará cambiar.
Ctrl + Shift + Re Pág
...y subo hasta el primer error y lo corrijo...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------
Y lees 10 o 15 líneas de
Y lees 10 o 15 líneas de templates anidadas para intentar encontrar cuál es el archivo donde ha dado el error y que de verdad hay que corregir... todo un machote...
Supongo...
...que todavía no me he encontrado en la tesitura, porque me sigue pareciendo algo sencillo...
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------
------------------------------------------------------------
MiniHOW-TO: destroy your hard disk
# dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------------------------
Vamos por partes
Lo primero es Ubuntu
Segundo, Ubuntu no es Linux, es algo-parecido-a-GNU-Linux, porque no solo tendrás instalado el kernel...
Tercero: para preguntar usa mejor la lista de correo, pero venga, aceptamos barco
No compilo desde Emacs porque soy "newbie" en él, pero ese error me suena al que da el comando "make" en una terminal cuando no existe un archivo Makefile...
Realmente...
... te digo "no te pases con el chico que es nuevo", aunque lo que quiero es ver cómo queda mi nueva foto de "oh! rly?".
--
PPC: int main(){long foo=1649571173;puts(&foo);}
x86: int main(){long foo=1702187618;puts(&foo);}
brue