Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
712 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Erreur de lien .h (débutant)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de lien .h (débutant)

n°934497
sedrilo
Posté le 31-12-2004 à 02:30:31  profilanswer
 

Salut! On a déjà du vous poser la question 100 fois, mais jsuis fatigué et ça fait une heure que je suis sur cette erreur je comprend pas.
 
Mon makefile :
graphik7 : graphik7.c
 $(CC) $(CCFLAGS) graphik7.c -lSDL -lSDL_ttf -o graphik7  
 
le haut de mon graphik.c :
#include <stdlib.h>
#include "../SDL-1.2.7/include/SDL.h"
#include "../SDL-1.2.7/include/SDL_ttf.h"
 
mon erreur de compilation :
[sedrilo@Sed projet]$ make
gcc -Wall -Werror graphik7.c -lSDL -lSDL_ttf -o graphik7
/usr/bin/ld: cannot find -lSDL_ttf
collect2: ld returned 1 exit status
make: *** [graphik7] Erreur 1
 
Où est l'erreur? il arrivait à inclure -lSDL, mais -lSDL_ttf ça marche pas, alors que les .h sont dans le même répertoire.
Une idée ?
Merci beaucoup !


Message édité par sedrilo le 31-12-2004 à 02:32:02
mood
Publicité
Posté le 31-12-2004 à 02:30:31  profilanswer
 

n°934512
matafan
Posté le 31-12-2004 à 04:04:03  profilanswer
 

Est-ce que sdl-ttf est instalé sur la machine où tu compiles ?

n°934577
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-12-2004 à 12:11:41  profilanswer
 

sedrilo a écrit :


graphik7 : graphik7.c
 $(CC) $(CCFLAGS) graphik7.c -lSDL -lSDL_ttf -o graphik7  
 
le haut de mon graphik.c :
#include <stdlib.h>
#include "../SDL-1.2.7/include/SDL.h"
#include "../SDL-1.2.7/include/SDL_ttf.h"
 
mon erreur de compilation :
[sedrilo@Sed projet]$ make
gcc -Wall -Werror graphik7.c -lSDL -lSDL_ttf -o graphik7
/usr/bin/ld: cannot find -lSDL_ttf
collect2: ld returned 1 exit status
make: *** [graphik7] Erreur 1
 
Où est l'erreur? il arrivait à inclure -lSDL, mais -lSDL_ttf ça marche pas, alors que les .h sont dans le même répertoire.


 
C'est une erreur de l'éditeur de lien (ld)
 
T'es sûr du nom des bibliothèques ? Pas d'extension (.a), pas de 'lib' dans le nom ?
 

Citation :

gcc -Wall -Werror graphik7.c -lSDL -lSDL_ttf -o graphik7


T'es sûr que tu as besoin de SDL_ttf ? Tu ne serais pas en train de confondre les fichiers d'interfaces (.h) et les bibliothèques ?


Message édité par Emmanuel Delahaye le 31-12-2004 à 12:12:16

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°934661
sedrilo
Posté le 31-12-2004 à 14:51:48  profilanswer
 

Oui, c'est vrai je confond toujours les .h et .a
Le problème c'est que dans mon makefile si j'enlève -lSDL_ttf, je me retrouve à la compilation avec :  
 
[sedrilo@Sed projet]$ make
gcc -Wall -Werror graphik7.c -lSDL -o graphik7
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x234): In function `main':
: undefined reference to `TTF_Init'
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x239): In function `main':
: undefined reference to `TTF_Init'
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x534): In function `vTexte':
: undefined reference to `TTF_OpenFont'
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x581): In function `vTexte':
: undefined reference to `TTF_RenderText_Solid'
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x5a0): In function `vTexte':
: undefined reference to `TTF_RenderText_Shaded'
/home/sedrilo/tmp/ccnyJ3mB.o(.text+0x64e): In function `vTexte':
: undefined reference to `TTF_CloseFont'
collect2: ld returned 1 exit status
make: *** [graphik7] Erreur 1
 
Or toutes ces fonctions sont décrites dans le SDL_ttf.h inclus grace à la commande #include "../SDL-1.2.7/include/SDL_ttf.h"  
 
... ?

n°934670
nico168
Posté le 31-12-2004 à 15:18:51  profilanswer
 

a mon avis, il te manque le paquet SDL_ttf-dev ou SDL_ttf-devel suivant ta distrib.

n°934673
sedrilo
Posté le 31-12-2004 à 15:26:15  profilanswer
 

Ce qui veut dire que j'aurais mal installé ma librairie ?

n°934676
multani
Dépressionnisé
Posté le 31-12-2004 à 15:30:48  profilanswer
 

Apparement, tu as extrais les fichiers SDL dans un de tes répertoires et pas dans ton répertoires ou ya toutes les librairies...
Or, si tu dis à GCC de lier avec SDL_ttf juste en mettant -lSDL_ttf, il risque d'avoir du mal à trouver ce qu'il veut ...
Le mieux serait surement d'installer le paquet de développement SDL livré avec ta distrib ...

n°934690
sedrilo
Posté le 31-12-2004 à 16:29:41  profilanswer
 

Merci du conseil, mais SDL se trouve sur le CD 4 de LINUX, et je n'arrive pas à le trouver sur le net (autre qu'emule qui prendrait plusieurs jours) car il semble payant (reservé aux membres de la "communauté" ).

n°934693
multani
Dépressionnisé
Posté le 31-12-2004 à 16:41:10  profilanswer
 

Recherche sur le net (genre http://rpm.pbone.net/) pour trouver des rpms adaptés... (je suppose que t'as une Mandrake 10 ?)

n°934695
sedrilo
Posté le 31-12-2004 à 16:46:03  profilanswer
 

oui ! 10.0

mood
Publicité
Posté le 31-12-2004 à 16:46:03  profilanswer
 

n°934696
multani
Dépressionnisé
Posté le 31-12-2004 à 16:53:43  profilanswer
 
n°934727
sedrilo
Posté le 31-12-2004 à 19:19:41  profilanswer
 

Oui, le mieux est de l'installer à partir de la distrib, soit 30h de téléchargement sur un vieux serveur que j'ai trouvé...
Sinon en fait je ne sais pas comment inclure ma librairie dans mon programme : J'ai fait ./configure et make pour installer la librairie sdl_ttf, et je la lie dans mon fichier principal en faisant #include "../SDL_ttf/SDL_ttf.h" car c'est là qu'elle s'est retrouvée installé (le .h en tout cas).  
C'est pas comme ça qu'on fait ?
A quoi correspondent les SDL_ttf-dev et SDL_ttf-devel, je ne les ai pas installés ceux là !! J'ai juste décompacté SDL_ttf-2.0.7.tar.gz et installé, mais il existe un fichier SDL_ttf-devel-2.0.7-1.i386.rpm (ce dernier requiers également le CD4 pour s'installer..., idem avec ma recherche d'après les conseils de Multani, il me demande le CD4)

n°934840
blurk
Posté le 01-01-2005 à 11:51:08  profilanswer
 

Normalement #include "SDL_ttf.h" c'est bon (et #include "SDL.h" ).
 
Tu devrais utiliser sdl-config, c'est plus propre :
sdl-config --cflags pour les flags du compilateur.
sdl-config --libs pour les flags du linker.
 
gcc graphik7.c `sdl-config --cflags --libs` -lSDL_ttf -o graphik7
 
(enfin dans ton Makefile tu définit CFLAGS et LFLAGS en fonction :
CFLAGS = `sdl-config --cflags`
LFLAGS = `sdl-config --libs` -lSDL_ttf
et ça devrait rouler).
 
Sinon effectivement on dirait qu'il te manque le paquet de développement de SDL_ttf, SDL_ttf-devel* doit être le bon je pense. Tu peux pas le télécharger ?

n°935411
sedrilo
Posté le 02-01-2005 à 22:57:18  profilanswer
 

C'est bon depuis j'ai récupéré le CD4 et j'ai installé le package.
La compilation ne marchait toujours pas, j'ai donc mis ta ligne dans le makefile et ça a compilé. Nikel !
Merci à tous !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Erreur de lien .h (débutant)

 

Sujets relatifs
déclaration xml inattendue / erreur dans fichier xslt ?comment afficher different texte dans ma page ( debutant )
gestion d'erreur dans PHP5erreur de compilation
probleme debutant pooProbléme avec If et Else [Débutant]
erreur de ligne incompréhensibleCrypter un lien
lien vers une frameMessage d'erreur Access is denied.
Plus de sujets relatifs à : Erreur de lien .h (débutant)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR