TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: migsantiago en 02 de Marzo de 2008, 22:47:35
-
Hola
Estoy escribiendo en lenguaje C usando Ubuntu. Cuando quiero compilar mi código escribo lo siguiente.
link@Sempron:~/Desktop$ cc lee_wav_header.c -o lee_wav_header.exe
lee_wav_header.c:5:19: error: stdio.h: No such file or directory
lee_wav_header.c:6:48: error: fcntl.h: No such file or directory
lee_wav_header.c:7:52: error: stdlib.h: No such file or directory
lee_wav_header.c: In function ‘main’:
lee_wav_header.c:26: warning: incompatible implicit declaration of built-in function ‘printf’
lee_wav_header.c:31: warning: incompatible implicit declaration of built-in function ‘fprintf’
lee_wav_header.c:31: error: ‘stderr’ undeclared (first use in this function)
lee_wav_header.c:31: error: (Each undeclared identifier is reported only once
lee_wav_header.c:31: error: for each function it appears in.)
lee_wav_header.c:32: warning: incompatible implicit declaration of built-in function ‘exit’
lee_wav_header.c:36: error: ‘O_RDONLY’ undeclared (first use in this function)
lee_wav_header.c:42: warning: incompatible implicit declaration of built-in function ‘exit’
lee_wav_header.c:46: error: ‘SEEK_SET’ undeclared (first use in this function)
link@Sempron:~/Desktop$
Y pues esos son los errores que me salen. Normalmente cuando ejecuto el comando cc en el servidor de mi escuela se compila todo correctamente, pero aquí me da error de ubicación de los archivos .h.
¿Qué debo hacer para que cc compile bien?
El programa que estoy probando es el siguiente.
#include <stdio.h>
#include <fcntl.h> /* Modos de apertura */
#include <stdlib.h> /* Funciones de archivos */
/*
tambytes contiene el tamaño del archivo
canales contiene el número de canales del archivo
fmuestreo da la frecuencia de muestreo
baudios da los bits por segundo
bloque da la alineación de bloque
bitsmuestra da la resolución de cada muestra
*/
int tambytes, canales, fmuestreo, baudios, bloque, bitsmuestra;
char acumulador[4]; //recibe datos de la cabecera temporalmente
char headerwav[25]; //recibe la cabecera completa + EOF
int archivo; //recibe el descriptor de archivo a analizar
main(int argc, char * argv[])
{
//Imprime saludo
printf("\nPrograma que lee la cabecera de un archivo WAV.\n");
//Verifica que se hayan dado bien los parámetros
if(argc!=2) //ejecutable y archivowav
{
fprintf(stderr,"\nUso del programa: \"%s\" archivo.wav\n", argv[0]); //uso del lector de header
exit(-1); //termina programa indicando que -1 es error (return -1)
}
//Abre el archivo que indicó el usuario, solo lectura
archivo = open (argv[1], O_RDONLY);
//Comprueba que existe el archivo
if(archivo==-1)
{
perror("\nNo se puede abrir el archivo: ");
exit(-1); //termina el programa
}
// Coloca el puntero en la posición 0 para copiar toda la cabecera
lseek(archivo,0,SEEK_SET);
read(archivo, headerwav, 24); //lee 24 bytes y los deposita en headerwav
headerwav[24]=0; //deposita el EOF al final de la cadena
//imprime en pantalla el contenido del header wav
printf("\nEl header de su archivo wav contiene lo siguiente: \n %s",headerwav);
printf("\n");
close(archivo); //cierra el archivo wav que se leyó
}
Gracias.
-
Tiene toda la pinta de no estar bien definido el entorno de compilación. Ejecuta en una ventana del sistema la orden "path" y haber si están definidos los caminos "path" de las librerías.
Un saludo
-
Hola JFH
Lo que me da es que ni reconoce el comando path :D
link@Sempron:/$ path
bash: path: command not found
link@Sempron:/$
¡Auxilio! :mrgreen:
-
A mi me compila sin problemas.
Comprueba que tengas instalado el paquete libc6-dev (Si tu sistema es de 64 bits creo que sería el paquete libc6-dev-amd64)
Si quieres ver la variable PATH, puedes poner echo $PATH
Saludos,
Miguel Angel.
-
Hola
Soy nuevo en linux, ¿cómo compruebo si está instalado?
-
Con synaptic (Sistema -> Administracion -> Gestor de paquetes de paquetes synaptic) puedes ver paquetes disponibles para instalar y los que tienes instalados.
De todas formas este caso lo más rápido es ejecutar en un terminal
sudo apt-get install libc6-dev
Si lo tienes instalado te lo dirá y sino procederá ha instalarlo.
Saludos,
Miguel Angel.
-
y en lugar de path usa:
# updatedb
cuando termine haces
#locate -el nobre de tu archivo o coincidencias-
Y encontrara todas las rutas posibles o existentes que tiene el nombre que has buscado.
-
Hola
Hice lo siguiente:
link@Sempron:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
link@Sempron:~$
No sé si esté bien.
Y verifiqué con la terminal si tengo instalado el paquete libc, se puso a bajar e instalar unos archivos. Luego compilé un hola mundo muy simple y lo logró hacer :mrgreen:
Gracias ma4826, funcionaron tus instrucciones.
Gracias navaismo.
-
Yo prefiero instalar completo el paquete build-essential:
$ sudo aptitude install build-essential
-
Geo, ¿qué ventajas tiene instalar ese paquete?
-
En realidad, se supone que contiene lo necesario para crear paquetes Debian, pero los paquetes que a su vez instala son los necesarios para compilar casi cualquier programa :).
http://packages.ubuntu.com/gutsy/build-essential
-
En realidad, se supone que contiene lo necesario para crear paquetes Debian, pero los paquetes que a su vez instala son los necesarios para compilar casi cualquier programa :).
http://packages.ubuntu.com/gutsy/build-essential
Hola,
Contiene los enlaces simbólicos,
cabeceras, y el objeto archivos necesarios para compilar y vincular los programas que utilizan la biblioteca C estándar.
S2;
-
probaste con
#aptitude install build-essential ?
eso te baja todo lo necesario para programar en linux
-
Hola
Solo utilicé el método de Miguel...
sudo apt-get install libc6-dev
Y el compilador compiló bien, no sabría decirte si bajó todo porque soy noob en linux.