Thread View: es.comp.os.linux.programacion
7 messages
7 total messages
Started by Alias
Wed, 12 Aug 2009 12:17
undefined reference to 'nombre función'
Author: Alias
Date: Wed, 12 Aug 2009 12:17
Date: Wed, 12 Aug 2009 12:17
112 lines
5933 bytes
5933 bytes
Hola, estoy intentando hacer una prueba mínima con gtk, pero no puedo
compilar, los archivos actualmente han dejenerado en esto y ni así:
+ aplicacion.c:
#include <gui.h>
int main (int argc, char* argv[])
{
int valor;
valor = inicializar();
return valor;
}
hay una carpeta que contiene 2 archivos (cabecera y código)
+ interfaz/gui.h:
int inicializar (void);
+ interfaz/gui.c:
#include <gui.h>
int inicializar (void)
{
return 0;
}
Compilo con: gcc -I`pwd`/interfaz -g -v -Wall -o aplicacion
aplicacion.c
y me da el error: undefined reference to `inicializar'
3 cosillas:
También he probado con gui.h y gui.c en la misma carpeta que
aplicacion.c, el error es el mismo.
Introduje errores en gui.c y no los "canta" así que a gui.c ni entra.
El archivo gui.c si lo encuentra porque anteriormente escribia mal la
ruta y me decía:
gui.h: No existe el fichero ó directorio
Esta es toda la salida:
Usando especificaciones internas.
Objetivo: i486-linux-gnu
Configurado con: ../src/configure -v --with-pkgversion='Ubuntu
4.3.3-5ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.3/
README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/
usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-
included-gettext --enable-threads=posix --enable-nls --with-gxx-
include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-
clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --
enable-targets=all --with-tune=generic --enable-checking=release --
build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Modelo de hilos: posix
gcc versión 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
COLLECT_GCC_OPTIONS='-I/home/javier/proyecto/interfaz' '-g' '-v' '-
Wall' '-o' 'aplicacion' '-mtune=generic'
/usr/lib/gcc/i486-linux-gnu/4.3.3/cc1 -quiet -v -I/home/javier/
proyecto/interfaz aplicacion.c -D_FORTIFY_SOURCE=2 -quiet -dumpbase
aplicacion.c -mtune=generic -auxbase aplicacion -g -Wall -version -
fstack-protector -o /tmp/cca6Hujl.s
se descarta el directorio inexistente "/usr/local/include/i486-linux-
gnu"
se descarta el directorio inexistente "/usr/lib/gcc/i486-linux-gnu/
4.3.3/../../../../i486-linux-gnu/include"
se descarta el directorio inexistente "/usr/include/i486-linux-gnu"
la búsqueda de #include "..." inicia aquí:
la búsqueda de #include <...> inicia aquí:
/home/javier/proyecto/interfaz
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.3.3/include
/usr/lib/gcc/i486-linux-gnu/4.3.3/include-fixed
/usr/include
Fin de la lista de búsqueda.
GNU C (Ubuntu 4.3.3-5ubuntu4) versión 4.3.3 (i486-linux-gnu)
compilado por GNU C versión 4.3.3, GMP versión 4.2.4, MPFR versión
2.4.0.
GGC heurísticas: --param ggc-min-expand=97 --param ggc-min-
heapsize=126295
Compiler executable checksum: 0bf5703b57e064ca90b48f4e2c186f4a
COLLECT_GCC_OPTIONS='-I/home/javier/proyecto/interfaz' '-g' '-v' '-
Wall' '-o' 'aplicacion' '-mtune=generic'
as -V -Qy -o /tmp/ccoZuxIx.o /tmp/cca6Hujl.s
GNU assembler version 2.19.1 (i486-linux-gnu) using BFD version (GNU
Binutils for Ubuntu) 2.19.1
COMPILER_PATH=/usr/lib/gcc/i486-linux-gnu/4.3.3/:/usr/lib/gcc/i486-
linux-gnu/4.3.3/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-
gnu/4.3.3/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/
4.3.3/:/usr/lib/gcc/i486-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i486-linux-gnu/4.3.3/:/usr/lib/gcc/i486-
linux-gnu/4.3.3/:/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/:/
lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/i486-linux-gnu/
4.3.3/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-I/home/javier/proyecto/interfaz' '-g' '-v' '-
Wall' '-o' 'aplicacion' '-mtune=generic'
/usr/lib/gcc/i486-linux-gnu/4.3.3/collect2 --eh-frame-hdr -m elf_i386
--hash-style=both -dynamic-linker /lib/ld-linux.so.2 -o aplicacion -z
relro /usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o /usr/
lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crti.o /usr/lib/gcc/i486-
linux-gnu/4.3.3/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.3.3 -L/usr/
lib/gcc/i486-linux-gnu/4.3.3 -L/usr/lib/gcc/i486-linux-gnu/
4.3.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/
i486-linux-gnu/4.3.3/../../.. /tmp/ccoZuxIx.o -lgcc --as-needed -
lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /
usr/lib/gcc/i486-linux-gnu/4.3.3/crtend.o /usr/lib/gcc/i486-linux-gnu/
4.3.3/../../../../lib/crtn.o
/tmp/ccoZuxIx.o: In function `main':
/home/javier/proyecto/aplicacion.c:7: undefined reference to
`inicializar'
collect2: ld devolvió el estado de salida 1
Re: undefined reference to 'nombre función'
Author: Alias
Date: Wed, 12 Aug 2009 12:19
Date: Wed, 12 Aug 2009 12:19
5 lines
1338 bytes
1338 bytes
(Se envió antes de tiempo jeje perdonad) ¿Alguien tiene alguna idea? cualquier posibilidad es bien recibida. Gracias de antemano.
Re: undefined reference to 'nombre función'
Author: Alias
Date: Wed, 12 Aug 2009 13:26
Date: Wed, 12 Aug 2009 13:26
4 lines
1367 bytes
1367 bytes
Vale, estaba compilando malllllllllllllllllllllllll, pffff que despiste. Gracias de todas formas ;)
Re: undefined reference to 'nombre funci�n'
Author: Pedro Maicas
Date: Thu, 13 Aug 2009 06:53
Date: Thu, 13 Aug 2009 06:53
21 lines
2086 bytes
2086 bytes
On Wed, 12 Aug 2009 06:26:13 -0700 (PDT), Alias <jcarmena@gmail.com> wrote: >Vale, estaba compilando malllllllllllllllllllllllll, pffff que >despiste. � compilando mal ? No se a qu� te refieres, pero por lo que has puesto en el primer mensaje, estabas llamando a una funcion (inicializar) que no estaba definida, de ah� el mensaje de error que te daba (que lo dec�a bien claro). Es decir, cuando en el primer fichero invocas una funcion que aparece posteriormente en otro fichero, el compilador no sabe donde est� (ni si est�) esa funcion. Siempre declara las funciones antes de usarlas. Saludos :-) -Pedro- http://www.maicas.net/ e-mail en www.maicas.net
Re: undefined reference to 'nombre función'
Author: angel
Date: Thu, 13 Aug 2009 13:55
Date: Thu, 13 Aug 2009 13:55
20 lines
2185 bytes
2185 bytes
> > Es decir, cuando en el primer fichero invocas una > funcion que aparece posteriormente en otro fichero, el compilador > no sabe donde está (ni si está) esa funcion. Siempre declara > las funciones antes de usarlas. ¿Entonces no basta con el "#include <gui.h>" en el archivo "aplicacion.c"? Ahí la declara, ¿ no ?. Quizá es que el compilador no encuentra "gui.h". Si "gui.h" está en el mismo directorio de "aplicacion.c" debería escrivir el include así: #include "gui.h" y si está en otro, así: #include "/path/al/archivo/gui.h" Tal como está escrito ahora solo será encontrado si está en el paht de los includes. Otra opción sería indicar al compilador el camino a los archivos cabecera, creo que con la opció "-I /camino/a/los/*.h". Por favor. Corregidme si me equivoco que siempre me lio con esto.
Re: undefined reference to 'nombre funci_n'
Author: Gonzalo Pérez de Olaguer Córdoba
Date: Thu, 13 Aug 2009 14:13
Date: Thu, 13 Aug 2009 14:13
54 lines
3278 bytes
3278 bytes
Hola angel <angelbat@graciasensefils.net> el Thu, 13 Aug 2009 15:55:41 +0200 escribiste: > > > > Es decir, cuando en el primer fichero invocas una > > funcion que aparece posteriormente en otro fichero, el compilador > > no sabe donde está (ni si está) esa funcion. Siempre declara > > las funciones antes de usarlas. > > ¿Entonces no basta con el "#include <gui.h>" en el archivo "aplicacion.c"? > Ahí la declara, ¿ no ?. Sí basta, siempre que al compilador le indiques que busque en el directorio donde se encuentra gui.h (en este caso -I`pwd`/interfaz), cosa que ha hecho. > Quizá es que el compilador no encuentra "gui.h". Sí que lo encuentra. > Si "gui.h" está en el mismo directorio de "aplicacion.c" debería escrivir el > include así: #include "gui.h" > y si está en otro, así: #include "/path/al/archivo/gui.h" Correcto. > Tal como está escrito ahora solo será encontrado si está en el paht de los > includes. > Otra opción sería indicar al compilador el camino a los archivos cabecera, > creo que con la opció "-I /camino/a/los/*.h". Eso es lo que ha hecho. > > Por favor. Corregidme si me equivoco que siempre me lio con esto. Lo que dices es correcto. Puede que me equivoque, pero creo que los includes eran correctos, y de hecho la compilación funcionaba bien. Lo que le estaba fallando era la operación de enlace del "linkador". El error se lo estaba dando a la hora de enlazar, porque no había incluido gui.o para enlazar junto a aplicaction.o Sin mirar mas detenidamente, creo que eso es lo que le pasaba. -- Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es> --- www.gpoc.es PGP key 2861C704 --- F206 5671 6789 425D 111C 1302 214F 1934 2861 C704
Re: undefined reference to 'nombre funci_n'
Author: angel
Date: Thu, 13 Aug 2009 14:42
Date: Thu, 13 Aug 2009 14:42
14 lines
1792 bytes
1792 bytes
Gonzalo Pérez de Olaguer Córdoba wrote: > Sí basta, siempre que al compilador le indiques que busque en el > directorio donde se encuentra gui.h (en este caso -I`pwd`/interfaz), cosa > que ha hecho. Vale. He mirado más detenidamente. En mi lector de news veo "I" (i mayúscula) como "l" (ele minúscula). De ahí la confusión. Tal como compila Alias, la función está declarada pero no definida. (lo acavo de mirar en mi libro de C :-) ) Saludos.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads