#1 Le 21/09/2007, à 21:28
- Vampyre
[Résolu] Chemin de compilation incorrect ?
Rebonjour !
Après avoir réussi à installer la SDL, j'ai compilé avec succès et installé avec succès le moteur 2D Agar.
Cependant, lorsque je tente leur "Hello World", j'obtiens ce genre d'insulte
fabrice@fabrice-desktop:~/Programmation/agar/helloworld$ ./hello
./hello: error while loading shared libraries: libag_core.so.1: cannot open shared object file: No such file or directory
Il me manque donc une librairie. Après avoir recherché mon problème de lib sur mon PC, il s'agit en fait d'une bibliothèque faisant partie intégrante du moteur 2D.
Voici le code source de mon énormissime Hello World (pas de critique pour les puristes c'est qu'un helloworld quoi )
#include </home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h>
#include </home/fabrice/Jeux/moteurs/agar/agar-1.2/gui/gui.h>
int
main(int argc, char *argv)
{
AG_Window *win;
if (AG_InitCore("hello", 0) == -1 ||
AG_InitVideo(320, 240, 32, 0) == -1)
return (1);
win = AG_WindowNew(0);
AG_LabelNewStatic(win, "Hello, world!");
AG_WindowShow(win);
AG_EventLoop();
return (0);
}
La raison pour laquelle mes includes sont si long est que mon moteur 2D se trouve dans ce répertoire, tandis que mon programme se trouve ailleurs (/home/fabrice/Programmation/agar/helloworld/helloworld.c
Lorsque je compile, voici ce qu'il me donne
fabrice@fabrice-desktop:~/Programmation/agar/helloworld$ cc `agar-config --cflags` -o hello helloworld.c `agar-config --libs`
Dans le fichier inclus à partir de /usr/include/SDL/SDL_stdinc.h:28,
à partir de /usr/include/SDL/SDL_main.h:26,
à partir de /usr/include/SDL/SDL.h:28,
à partir de /home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h:30,
à partir de helloworld.c:1:
/usr/include/SDL/SDL_config.h:59:1: attention : « HAVE_SYS_TYPES_H » redéfini
Dans le fichier inclus à partir de /home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h:15,
à partir de helloworld.c:1:
/usr/local/include/agar/agar/config/have_sys_types_h.h:2:1: attention : ceci est la localisation d'une précédente définition
Et lorsque j'exécute, il me rend l'erreur indiquée ci-dessus.
Cela titillerait-il un programmeur et compileur invétéré ? Car pas encore assez d'expérience sous Linux que pour comprendre tous ces messages, ni même son architecture... Une idée de la raison pour laquelle cela ne fonctionne-t-il pas ?
D'avance, et une fois de plus, un gros merci pour votre aide !
Dernière modification par Vampyre (Le 24/09/2007, à 17:39)
Hors ligne
#2 Le 21/09/2007, à 22:31
- telliam
Re : [Résolu] Chemin de compilation incorrect ?
normalement ce genre de messages ne sont que des warnings, et ne devrait pas t'empecher de compiler a part si tu as activé le flag -Werr lors de ta compilation.
il doit te manquer des flags de compilation car tu inclus 2 fois le mm fichiers via core.h.
pour t'eviter de mettre les chemin en dur dans ton code
remplace
#include </home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h>
#include </home/fabrice/Jeux/moteurs/agar/agar-1.2/gui/gui.h>
par
#include <agar/agar-1.2/core/core.h>
#include <agar/agar-1.2/gui/gui.h>
et dans ta ligne de compilation rajoute -I/home/fabrice/Jeux/moteurs apres cc
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#3 Le 22/09/2007, à 00:52
- Vampyre
Re : [Résolu] Chemin de compilation incorrect ?
Très gros merci pour cette réponse ultra rapide !
Voici ce que donne à présent la compilation, après tes modifications effectuées :
fabrice@fabrice-desktop:~/Programmation/agar/helloworld$ cc -I/home/fabrice/Jeux/moteurs `agar-config --cflags` -o hello helloworld.c `agar-config --libs`
Dans le fichier inclus à partir de /usr/include/SDL/SDL_stdinc.h:28,
à partir de /usr/include/SDL/SDL_main.h:26,
à partir de /usr/include/SDL/SDL.h:28,
à partir de /home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h:30,
à partir de helloworld.c:1:
/usr/include/SDL/SDL_config.h:59:1: attention : « HAVE_SYS_TYPES_H » redéfini
Dans le fichier inclus à partir de /home/fabrice/Jeux/moteurs/agar/agar-1.2/core/core.h:15,
à partir de helloworld.c:1:
/usr/local/include/agar/agar/config/have_sys_types_h.h:2:1: attention : ceci est la localisation d'une précédente définition
Et le résultat du programme compilé :
fabrice@fabrice-desktop:~/Programmation/agar/helloworld$ ./hello
./hello: error while loading shared libraries: libag_core.so.1: cannot open shared object file: No such file or directory
Gnignigni !!! Je dois louper quelque chose quelque part, mais je vois pas quoi...
Le pire, c'est que ce Hello est tiré de leur doc !
http://hypertriton.com/agar/docs/gui-in … ex.html.fr
Gnarf gnarf gnarf... je continue à chercher :s
Hors ligne
#4 Le 22/09/2007, à 19:21
- Marabout
Re : [Résolu] Chemin de compilation incorrect ?
Salut,
En fait ton problème vient du fait que ld ne sait pas où chercher la bibliothèque libag_core.so avec laquelle ton programme a été linkée. C'est une bibliothèque dynamique, c'est à dire que quand tu veux exécuter ton programme ld cherche à la charger en mémoire et s'il ne sait pas où chercher on obtient ce genre de message :
error while loading shared libraries: libag_core.so.1: cannot open shared object file: No such file or directory
Pour résoudre ton problème il faudrait que tu m'indiques où se trouve la bibliothèque libag_core.so
Dernière modification par Marabout (Le 22/09/2007, à 19:36)
Hors ligne
#5 Le 23/09/2007, à 16:56
- Vampyre
Re : [Résolu] Chemin de compilation incorrect ?
Merci pour ta réponse
En fait, ce fichier se retrouve à deux endroits sur le disque : le premier au sein même du moteur compilé (dans un répertoire perso sous /home, mais également dans /usr/local/agar
Hors ligne
#6 Le 23/09/2007, à 20:01
- Marabout
Re : [Résolu] Chemin de compilation incorrect ?
Salut,
La solution à ton problème est d'éditer le fichier .bashrc (si tu utilises bash ce qui est normalement le cas par défaut sous ubuntu) qui se trouve dans ton home et de rajouter cette ligne :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path_de_libag_core.so
LD_LIBRARY_PATH est la variable d'environnement dont se sert ld pour chercher les bibliothèques à charger.
EDIT : .bashrc est un fichier caché tu peux l'ouvrir avec cette commande :
gedit $HOME/.bashrc
Dernière modification par Marabout (Le 23/09/2007, à 20:04)
Hors ligne
#7 Le 24/09/2007, à 17:39
- Vampyre
Re : [Résolu] Chemin de compilation incorrect ?
Super !
Ca marche nickel !
Coool ! Mirchi !:D
Hors ligne