Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#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

Haut de page ↑