Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/02/2006, à 16:15

nabs

référence indéfinie vers « filelength » en c sur ubuntu

slt les gars,
le titre parle de lui meme. j'ai pourtant inclu un paquet de librairies :

#include <pthread.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <assert.h> 
#include <string.h>
//#include<io.h>
#include<fcntl.h>
//#include <sys\stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#include<gtk-2.0/gtk.h>
#include <glib.h>
#include <unistd.h>
#include <time.h>

les librairies en commentaires ne sont pas reconnues par le compilateur.
merci de bien vouloir me donner quelques solutions.

#2 Le 25/02/2006, à 12:30

phlinux

Re : référence indéfinie vers « filelength » en c sur ubuntu

Notez que ce qui est listé ici, ce ne sont pas des librairies mais des fichiers d'entêtes (*.h = header). Là se trouvent les prototypes de fonctions et autres definitions.
Si ce qui est cherché est apporté par une librairie, celle ci doit être dans le repertoire /usr/lib ou /usr/local/lib par exemple. Il faut alors utiliser l'option de compilation -l pour qu'elle soit accessible au moment de la compilation (ex: -lm pour la librairie libm). Sa définition doit être également accessible par le fichier .h adequat sous /usr/include ou /usr/local/include

Ici filelength est une fonction qui est décrite par io.h. Dans votre cas, essayez en déclarant

#include <asm/io.h>

(il dépend de l'architecture) et vérifiez si io.h est bien dans votre repertoire '/usr/include/asm'.
Pour l'include du sys/stat.h, c'est peut être votre / qui est inversé. Sinon, de la meme manière vérifiez que le repertoire sys est bien sous '/usr/include' et qu'il comprend stat.h .


Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670

Hors ligne

#3 Le 27/02/2006, à 00:53

gene69

Re : référence indéfinie vers « filelength » en c sur ubuntu

les librairies sont si j'ai bien compris en *.so*

...


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#4 Le 27/02/2006, à 21:03

phlinux

Re : référence indéfinie vers « filelength » en c sur ubuntu

Oui ".so" s'il s'agit de librairies dynamiques sinon ".a" quand ce sont des librairies statiques.

Tant que j'y suis, et ça peut toujours servir, pour voir les procédures/fonctions/méthodes qu'elles contiennent, il faut utiliser ar pour les libs statiques (ar -t libm.a) ou nm pour les dynamiques (nm -A libm.so)  ..... et à condition que le fichier n'ai pas été "stripé" après la compilation (c'est à dire qu'on y a laissé ses étiquettes) sinon : no symbol found !


Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670

Hors ligne