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 18/05/2006, à 18:31

Lord Van

Allegro + compilation programme marche pas

Bonjour à tous,

voilà je souhaiterais installer et utiliser allegro sous ubuntu car j'en ai besoin pr faire une interface graphique pr un projet informatique. Donc j'ai bien suivi l'installation de allegro, ./configure , make, make install, tout c'est bien fait correctement  mais quand je compile un programme très simple avec le terminal voila le résultat que ça me met :

kalel@ubuntu:~$ gcc -Wall test_allegro.c `allegro-config --libs` -o toto
kalel@ubuntu:~$ ./toto
./toto: error while loading shared libraries: liballeg.so.4.2: cannot open shared object file: No such file or directory


Pourtant je suis sur d'avoir bien suivi les instructions d'installation d'allegro, à partir de cet instant je pense que les librairies allegro se sont correctement installées !

Dans kdevelop, les erreurs suivantes me sont signalées :

cd '/home/kalel/Prog/test_allegro/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make -k
make all-recursive
make[1]: entrant dans le répertoire « /home/kalel/Prog/test_allegro/debug »
Making all in src
make[2]: entrant dans le répertoire « /home/kalel/Prog/test_allegro/debug/src »
linking test_allegro (libtool)
linking test_allegro (gcc)
test_allegro.o: In function `main':
/home/kalel/Prog/test_allegro/src/test_allegro.c:6: undefined reference to `install_allegro'
/home/kalel/Prog/test_allegro/src/test_allegro.c:7: undefined reference to `install_keyboard'
/home/kalel/Prog/test_allegro/src/test_allegro.c:9: undefined reference to `set_gfx_mode'
/home/kalel/Prog/test_allegro/src/test_allegro.c:10: undefined reference to `allegro_error'
/home/kalel/Prog/test_allegro/src/test_allegro.c:10: undefined reference to `allegro_message'
/home/kalel/Prog/test_allegro/src/test_allegro.c:14: undefined reference to `makecol'
/home/kalel/Prog/test_allegro/src/test_allegro.c:14: undefined reference to `screen'
/home/kalel/Prog/test_allegro/src/test_allegro.c:14: undefined reference to `clear_to_color'
/home/kalel/Prog/test_allegro/src/test_allegro.c:16: undefined reference to `makecol'
/home/kalel/Prog/test_allegro/src/test_allegro.c:16: undefined reference to `font'
/home/kalel/Prog/test_allegro/src/test_allegro.c:16: undefined reference to `screen'
/home/k
make[2]: quittant le répertoire « /home/kalel/Prog/test_allegro/debug/src »
alel/Prog/test_allegro/src/test_allegro.c:16: undefined reference to `textout_centre_ex'
/home/kalel/Prog/test_allegro/src/test_allegro.c:18: undefined reference to `readkey'
collect2: ld returned 1 exit status
make[2]: *** [test_allegro] Erreur 1
make[2]: La cible « all » n'a pas pu être refabriquée à cause d'erreurs.
make[2]: entrant dans le répertoire « /home/kalel/Prog/test_allegro/debug »
make[2]: quittant le répertoire « /home/kalel/Prog/test_allegro/debug »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /home/kalel/Prog/test_allegro/debug »
make: *** [all-recursive-am] Erreur 2
make: La cible « all » n'a pas pu être refabriquée à cause d'erreurs.
*** Exited with status: 2 ***


Pourtant voici mon programme pour le moins simple :

#include <Allegro/allegro.h>


int main(int argc, const char *argv[])
{
    allegro_init();
    install_keyboard();

    if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0)) {
        allegro_message("Error setting 320x200x8 gfx mode:\n%s\n", allegro_error);
        return -1;
    }

    clear_to_color(screen, makecol(255, 255, 255));

    textout_centre_ex(screen, font, "Hello, world!", 160, 96, makecol(0, 0, 0), -1);

    readkey();

    return 0;
}
END_OF_MAIN();



Merci d'avance pr vos réponses !

++

Hors ligne

#2 Le 19/05/2006, à 19:07

Ver Rader

Re : Allegro + compilation programme marche pas

Salut Lord Van,

je crois bien que si ton programme refuse de se lancer c'est que les bilbiothèques partagées (fichiers finissant en .so) Allegro ne sont pas accessibles dans ton environnement.

Je m'explique : l'ensemble des répertoires dans lequel le système va rechercher ces bibliothèques, lorsqu'un programme en a besoin, est recensé (entre autres) dans une variable d'environnement appelée LD_LIBRARY_PATH. Pour que ton exécutable puisse trouver les bibliothèques Allegro il faut donc que cette variable contienne le répertoire où se trouvent ces bibliothèques.

Concrètement, si les bibliothèques se trouvent dans /usr/local/Allegro/lib, il faut ajouter ce répertoire à la liste contenue dans LD_LIBRARY_PATH. Ce que tu peux faire à l'aide de la commande suivante :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Allegro/lib


Tu peux vérifier que ça marche effectivement en faisant ensuite ;

ldd ./toto

dans le répertoire où tu as compilé toto. Cette commande affiche l'ensemble des bibliothèques partagées nécessaires à toto avec leur localisation ou bien la chaîne de caractères 'not found'.

Tu ne pourras lancer toto qu'à partir du moment où il n'y aura plus aucun 'not found'.

Par la suite, pour éviter d'avoir à redéfinir LD_LIBRARY_PATH à chaque session, tu peux mettre la ligne EXPORT dans ton fichier $HOME/.bashrc.

En espérant t'avoir aidé,

Ver Rader

Hors ligne