2011-03-07 3 views
2

J'ai essayé d'installer la bibliothèque Allegro aujourd'hui. J'ai la même expérience en C++, mais il semble que je n'en ai aucune pour faire ce genre de choses. J'ai compilé Allegro 5.0 à partir de la source et le mettre dans /usr/lib/gcc/i486-linux-gnu/4.4/include/allegro5. Mais quand je tente de compiler mon code, cela est nécessaire quand:Allegro dans Ubuntu: référence non définie à `al_install_system '

> g++ test2.cc -o test2 
/home/chris/Desktop/c++/test2/.objs/main.o||In function `main':| 
main.cpp:(.text+0x22)||undefined reference to `al_install_system'| 
main.cpp:(.text+0x3e)||undefined reference to `al_create_display'| 
main.cpp:(.text+0x6b)||undefined reference to `al_map_rgb'| 
main.cpp:(.text+0x8e)||undefined reference to `al_clear_to_color'| 
main.cpp:(.text+0x93)||undefined reference to `al_flip_display'| 
main.cpp:(.text+0xa1)||undefined reference to `al_rest'| 
main.cpp:(.text+0xa9)||undefined reference to `al_destroy_display'| 
||=== Build finished: 7 errors, 0 warnings ===| 

Le code J'utilise:

#include <stdio.h> 
#include <allegro5/allegro.h> 

int main(int argc, char **argv) 
{ 
    ALLEGRO_DISPLAY *display = NULL; 

    if(!al_init()) { 
     fprintf(stderr, "failed to initialize allegro!\n"); 
     return -1; 
    } 

    display = al_create_display(640, 480); 
    if(!display) { 
     fprintf(stderr, "failed to create display!\n"); 
     return -1; 
    } 

    al_clear_to_color(al_map_rgb(0,0,0)); 
    al_flip_display(); 
    al_rest(10.0); 
    al_destroy_display(display); 
    return 0; 
} 

allegro-config --libs ne renvoie rien. J'avais Allegro en premier, mais ça n'a pas marché non plus.

+0

/usr/lib/gcc/i486-linux-gnu/4.4/include/allegro5 n'est pas le bon endroit pour mettre inclure les fichiers de la bibliothèque. – milan

+0

duplication possible de [Compiler le code C++ avec allegro 5 et g ++.] (Http://stackoverflow.com/questions/6377204/compiling-c-code-with-allegro-5-and-g) – karlphillip

Répondre

1

Vous devez créer un lien avec les bibliothèques Allegro, mais vous ne semblez pas le faire.

allegro-config --libs ne renvoie rien.

Il y a une partie de votre problème. Normalement, vous devriez pouvoir l'ajouter à votre ligne de commande, comme ceci:

g++ `allegro-config --libs` test2.cc -o test2 

Sur mon système (Ubuntu 10.10) donne ceci:

$ allegro-config --libs 
-L/usr/lib -Wl,-Bsymbolic-functions -lalleg-4.2.2 

Êtes-vous Invoquer le droit allegro-config? Peut-être devriez-vous spécifier le chemin complet?

+0

Comme je l'ai dit, je n'ont pas installé Allegro par paquets, mais plutôt compilé à partir de la source. Quand j'ai fait installer le paquet, il a retourné ce que vous avez posté ci-dessus. Devrais-je essayer de supprimer Allegro5 et d'installer à nouveau les paquets ou est-ce que cela ne changerait rien? – Suyooo

+0

Je répète les deux questions ci-dessus. – Thomas

+0

Avec rien que je voulais dire, il n'est pas installé, désolé si ce n'était pas clair. J'ai essayé de réinstaller les paquets (liballegro-4.2, liballegro-4.2-dev). La commande affiche maintenant la même chose que sur votre Ubuntu, et l'invocation de la droite mène toujours à la même sortie que dans l'OP. – Suyooo

20

Allegro 5 utilise pkg-config.

gcc foo.c -o foo $(pkg-config --libs allegro-5.0) 

Vous aurez également besoin de spécifier les bibliothèques addon que vous utilisez:

gcc foo.c -o foo $(pkg-config --libs allegro-5.0 allegro_image-5.0) 
+0

+1 bien meilleure réponse que le mien :) – Thomas

+0

Après avoir exécuté 'pkg-config --list-all | grep allegro ', je me suis rendu compte que je devais omettre le point zéro pour que la commande fonctionne pour moi:' gcc allegro_play.c -o joue $ (pkg-config --libs allegro-5) ' – HappyCoder86