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

  FORUM HardWare.fr
  Programmation
  C

  [C] allegro et édition de lien

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] allegro et édition de lien

n°1202537
juju286
Posté le 19-09-2005 à 15:59:30  profilanswer
 

Bonjour, j'ai téléchargé la bibliothèque allegro et l'ai installé sur mon ordi (les rpm suivants : allegro-4.0.3-5mdk.i586.rpm et liballegro4-4.0.3-5mdk.i586.rpm)
 
J'ai fait un programme test.c qui affiche "test" et ou j'inclus <allegro.h> pour voir si ca marche, voila ce que mon compilateur me dit :
 
[moi@localhost ~]$ gcc test.c -o test.x
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:98: undefined reference to `main'
collect2: ld returned 1 exit status
 
Que faut-il faire pour utiliser cette bibliothèque ?
 
Merci beaucoup  :hello:  
 
 
 

mood
Publicité
Posté le 19-09-2005 à 15:59:30  profilanswer
 

n°1203160
juju286
Posté le 20-09-2005 à 11:52:38  profilanswer
 

up

n°1203165
Elmoricq
Modérateur
Posté le 20-09-2005 à 11:57:46  profilanswer
 

A priori, ton fichier test.c n'a pas de fonction main  [:jean-guitou]
 
Tu peux nous le recopier ici ?


Message édité par Elmoricq le 20-09-2005 à 11:57:59
n°1203184
juju286
Posté le 20-09-2005 à 12:12:31  profilanswer
 

c 'est un truc tout con :
 

Code :
  1. #include <stdio.h>
  2. #include <allegro.h>
  3. int main(void)
  4. {
  5.   printf("test\n" );
  6. }


 
j'ai cru voir que quand on utilise cette bibliothèque il faut mettre la macro END_OF_MAIN() à la sortie du main mais ca ne change rien.

n°1203185
db__
spécialiste de l'à peu près
Posté le 20-09-2005 à 12:12:41  profilanswer
 

Bonjour
inclure le fichier allegro.h permet d'utiliser les fonctions qui y sont déclarées. En revanche, il faut aussi déclarer à l'éditeur de lien la bibliothèque à utiliser option -l
Si aucun fonction d'allegro n'est utilisée, l'éditeur de lien ne cherchera pas la bibliothèque vu qu'il n'en aura pas besoin.
Cordialement
 

n°1203186
juju286
Posté le 20-09-2005 à 12:14:06  profilanswer
 

db__ a écrit :

Bonjour
inclure le fichier allegro.h permet d'utiliser les fonctions qui y sont déclarées. En revanche, il faut aussi déclarer à l'éditeur de lien la bibliothèque à utiliser option -l
Si aucun fonction d'allegro n'est utilisée, l'éditeur de lien ne cherchera pas la bibliothèque vu qu'il n'en aura pas besoin.
Cordialement


 
il suffit donc que j'utilise une fonction de la biblio, que je rajoute l'option -lalleg à la compil et c'est bon c'est bien ca?

n°1203206
db__
spécialiste de l'à peu près
Posté le 20-09-2005 à 12:31:11  profilanswer
 

si la bibliothèque s'apelle alleg et qu'elle se trouve dans /usr/lib l'édition de lien doit pouvoir ce faire. Pour voir le réultat, je doute que l'emploie d'une seule fonction suffise.
un int main avec un return sur entier c'est plus joli.
au vu de l'erreur de compilation, il semblerait qu'il y a un problème dans la bibliothèque principale vu qu'il n'y trouve pas la fonction main

n°1203209
juju286
Posté le 20-09-2005 à 12:38:44  profilanswer
 

Dans /usr/lib j'ai la biblio suivante : liballeg_unsharable.a.
 
Voici mon nouveau test :
 

Code :
  1. #include <allegro.h>
  2. int main(void)
  3. {
  4.   allegro_init();
  5.   return 0;
  6. }
  7. END_OF_MAIN()


 
lorsque je compile comme ceci : gcc test.c -o test.x j'ai les erreurs suivantes
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:98: undefined reference to `main'
/home/julien/tmp/ccwuBJwb.o(.text+0x1d): In function `_mangled_main':
: undefined reference to `install_allegro'
collect2: ld returned 1 exit status
 
 
si je fais gcc test.c -o test.x -lalleg   -->
/usr/bin/ld: cannot find -lalleg
collect2: ld returned 1 exit status
[:anathema]

n°1203222
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-09-2005 à 13:01:00  profilanswer
 

-lalleg_unsharable

n°1203235
juju286
Posté le 20-09-2005 à 13:14:17  profilanswer
 

Harkonnen a écrit :

-lalleg_unsharable


 
je pense qu'une abbréviation du nom de la biblio suffit ( -lm pour la lib math ). J'ai essayé et j'ai ce même retour du compilo :
 
 
[julien@localhost ~]$ gcc test.c -o test.x -lalleg_unsharable
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/../../../crt1.o(.text+0x18): In function `_start':
../sysdeps/i386/elf/start.S:98: undefined reference to `main'
/home/julien/tmp/ccE2KzEa.o(.text+0x1d): In function `_mangled_main':
: undefined reference to `install_allegro'
collect2: ld returned 1 exit status
 
EN REVANCHE[julien@localhost ~]$ gcc test.c -o test.x -lalleg
/usr/bin/ld: cannot find -lalleg
collect2: ld returned 1 exit status
 
 :??:  

mood
Publicité
Posté le 20-09-2005 à 13:14:17  profilanswer
 

n°1203239
Elmoricq
Modérateur
Posté le 20-09-2005 à 13:17:21  profilanswer
 

juju286 a écrit :

je pense qu'une abbréviation du nom de la biblio suffit ( -lm pour la lib math ).


 
Regarde le nom du fichier pour la lib math ;)

n°1203276
juju286
Posté le 20-09-2005 à 13:44:23  profilanswer
 

libm.a, désolé...
mais je la trouve pas dans /usr/lib  :sweat:  
 
mais ca change pas mon problème  :??:  
même si je fais -lalleg_unsharable, ca foire  :??:  
 
 

n°1204206
db__
spécialiste de l'à peu près
Posté le 21-09-2005 à 12:13:10  profilanswer
 

Bonjour
une suggestion
regarde si tu as dans le répertoire /usr/lib un fichier allegro.pc ou liballegro.pc ou un nom approchant.
Si c'est le cas, tu peux faire
gcc -o test test.c `pkg-config --cflags --libs allegro` le allegro devant être remplacé par ce qu'il y a devant .pc

n°1204294
juju286
Posté le 21-09-2005 à 13:57:11  profilanswer
 

bonjour,
je n'ai pas de .pc.
par contre j'ai viré les rpm et j'ai téléchargé les sources, que j'ai installé.
 
à priori, pour la compilation, je fais  
 
[juju286@localhost ~]$ gcc test.c -o test.x -L/usr/local/lib -L/usr/X11R6/lib -lalleg-4.0.3 -lalleg_unsharable -export-dynamic
 
et c'est ok.
 
Seulement, l'éxécution donne ceci,
 
[julien@localhost ~]$ ./test.x
./test.x: error while loading shared libraries: liballeg.so.4.0: cannot open shared object file: No such file or directory
 
et j'ai vérifié le fichier liballeg.so.4.0, n'y est pas  :??:  alors que j'ai tout installé.
j'ai du oublié qq chose

n°1204298
Elmoricq
Modérateur
Posté le 21-09-2005 à 13:59:14  profilanswer
 

C'est à cause de l'option : -lalleg-4.0.3

n°1204664
juju286
Posté le 21-09-2005 à 18:47:40  profilanswer
 

Elmoricq a écrit :

C'est à cause de l'option : -lalleg-4.0.3


 
il me semble qu'elle est nécessaire, lorsque je l'enlève ca ne compile pas.
 
bon j'ai fait un truc qui marche mais ca m'a l'air bourrin :
 
[juju286@localhost ~]$ gcc -o test test.c -L/usr/local/lib -L/usr/X11R6/lib -Wl,-export-dynamic -lalleg-4.0.3 -lalleg_unsharable -lm -lpthread -lXxf86dga -lXxf86vm -lXext -lX11 -ldl
 
et là quand je lance ./test, rien ne se passe, normal me direz-vous vu la gueule du programme  :lol: , mais pas d'erreur.
Donc à priori, c'est bon, je peux me lancer dans l'apprentissage.
 
 :hello:

n°1204985
db__
spécialiste de l'à peu près
Posté le 22-09-2005 à 12:48:58  profilanswer
 

Bonjour
Une autre suggestion
essaye un link liballeg.so.4.0 liballeg.so.4.0.3
et relance la compilation sans les rajouts du dernier message


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

  [C] allegro et édition de lien

 

Sujets relatifs
Variable dans sql? lien dynamiques?lien sur un bouton : du html tout simple...
Allegro et Dev-C++Lien vers un fichier
Un lien pour deux urlRemplcer un lien texte par une image
Question sur Texas instrument 84+ silver éditionouvrir un lien dans le navigateur par défaut
créer un fichier .txt et faire un lien sur la .jsp / href (Websphere)Definir plusieur couleur de lien
Plus de sujets relatifs à : [C] allegro et édition de lien


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