Article View: es.comp.os.linux.programacion
Article #7114Problemas al linkar librerias de POSIX threads
From: Angel Ivan Castell Rovira
Date: Mon, 31 Mar 2003 09:45
Date: Mon, 31 Mar 2003 09:45
78 lines
3237 bytes
3237 bytes
Salu2 a to2.
Tengo problemas para compilar programas con la libreria de POSIX threads.
Un programita chorra como este:
/*
* ej.thread.c
*/
#include <pthread.h>
#include <stdio.h>
void *print_message(void *ptr){
printf ("%s ",(char*)ptr);
return(0);
} /* print_message */
int main(){
pthread_t thread1,thread2;
char *message1="Hello";
char *message2="World";
pthread_create(&thread1, NULL, print_message, &message1);
pthread_create(&thread2, NULL, print_message, &message2);
return(0);
exit(0);
} /* main */
El programa anterior lo compilo de la siguiente forma:
$ gcc ej.thread.c
y este es el error que obtengo por la pantalla
/tmp/ccegkcVY.o: In function `main':
/tmp/ccegkcVY.o(.text+0x54): undefined reference to `pthread_create'
/tmp/ccegkcVY.o(.text+0x6b): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
Como veis se trata de problemas con el linkador. El programa se compila bien,
de hecho, si solo genero el fichero objeto sin llegar a generar el ejecutable,
el fichero ej.thread.o se genera sin ningun problema haciendo esto:
$ gcc -c ej.thread.c -> genera ej.thread.o
No se lo que ocurre. Esta claro que no es un problema de sintaxis del C.
?Alguien me puede hechar un cable?? He editado el fichero
/usr/include/pthread.h
y alli aparece definida la funci�n pthread_create, por
lo que lo �nico que se me ha ocurrido es incluir la trayectoria completa en
el #include del programa en C y volverlo a compilar, pero sigue
saliendo el mismo mensaje de error.
�Tiene algo que ver el link que se usa en /usr/src/linux para apuntar
al kernel compilado? �Donde esta la implementaci�n de la cabecera
pthread.h? Porque yo en mi disco duro no he encontrado ningun fichero
pthread.c (locate pthread.c no encuentra nada).
�Existe algun manual del linkador de C que explique bien todo el proceso
para linkar librerias estaticas, dinamicas, generar objetos,
generar ejecutables y demas? Voy a hechar un vistazo por GOOGLE, pero
si alguien tiene experiencia en esto, seria de agradecer.
Muchas gracias a todos.
Technical Details
Message-ID:
<b692oc$kjd$1@sofora01.uji.es>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!bloom-beacon.mit.edu!news.rediris.es!news.uv.es!sofora01.uji.es!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,13e054c8d212500c,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-03-31 02:58:11 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!bloom-beacon.mit.edu!news.rediris.es!news.uv.es!sofora01.uji.es!not-for-mail
From: Angel Ivan Castell Rovira <al004140@alumail.uji.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Problemas al linkar librerias de POSIX threads
Date: Mon, 31 Mar 2003 09:45:48 +0000 (UTC)
Organization: Universitat Jaume I
Lines: 78
Sender: Angel Ivan Castell Rovira <al004140@anubis.uji.es>
Message-ID: <b692oc$kjd$1@sofora01.uji.es>
NNTP-Posting-Host: anubis.uji.es
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: sofora01.uji.es 1049103948 21101 150.128.40.100 (31 Mar 2003 09:45:48 GMT)
X-Complaints-To: news@marti.uji.es
NNTP-Posting-Date: Mon, 31 Mar 2003 09:45:48 +0000 (UTC)
User-Agent: tin/1.4.5-20010409 ("One More Nightmare") (UNIX) (AIX/4-3)