Compilar tu primer programa de Allegro 5 en Linux

En un post anterior hablamos del proceso para compilar tu primer programa de Allegro 4 en Linux. Compilar tu primer programa de Allegro 5 no es diferente; de hecho las reglas básicas para compilar son siempre las mismas así que no repetiré los detalles ya que si encuentras problemas puedes usar el post sobre Allegro 4 como referencia. Recuerda que en la mayoría de los casos, si encuentras errores durante la compilación, es posible que se deba a que no tienes bien definidas las rutas de las librerías que usa tu programa. Eso o que tu código tiene errores, claro :P.

Para empezar, este es un pequeño programa de prueba de Allegro 5. Como puedes ver tiene una función similar al programa de prueba usado en el post de Allegro 4.

// ejemplo-allegro-5.c
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>

ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_EVENT_QUEUE *events = NULL;

int main() {
    al_init();
    al_install_keyboard();
    al_set_new_display_flags(ALLEGRO_WINDOWED);
    al_set_new_display_option(ALLEGRO_SINGLE_BUFFER, 1, ALLEGRO_REQUIRE);
    display = al_create_display(640, 480);
    al_init_primitives_addon();

    events = al_create_event_queue();
    al_register_event_source(events, al_get_keyboard_event_source());

    while (al_is_event_queue_empty(events)) {
        al_draw_filled_circle(rand() % 640, rand() % 480, rand() % 64, al_map_rgb(rand() % 256, 0, 0));
        al_flip_display();
        al_rest(0.015);
    }
}

Tal como lo hicimos en el post de Allegro 4, para compilar este programa debemos indicar al compilador las librerías que usa el programa así como, de ser necesario, las rutas en las que están instaladas. De esta forma, el comando para compilar este programa sería algo como el siguiente:

monstruosoft@PC:~/code/allegro$ gcc ejemplo-allegro-5.c -I/home/monstruosoft/libs/usr/local/include/ -L/home/monstruosoft/libs/usr/local/lib/ -lallegro -lallegro_primitives -o ejemplo-allegro-5

No olvides configurar la variable de entorno LD_LIBRARY_PATH para poder ejecutar el programa ejecutable resultante ;).

Como puedes ver, el proceso es bastante simple una vez que sabes cómo hacerlo. Espero que te sea de utilidad.

2 comments

  1. Akbar · 25 Days Ago

    hola, disculpa.
    Emplee el comando sudo apt install liballegro5-dev.
    Y segun yo se instalaron los paquetes correspondientes.
    Mi problema es que no me compila mi programa cuando lo pongo en codeblocks.
    y no se con que ruta vincular las librerias de allegro.

    me aparece este error: ||=== Build file: “no target” in “no project” (compiler: unknown) ===|
    /usr/bin/ld: /home/akbar/Documents/game/allegro.o||in function `main’:|
    allegro.cpp|| undefined reference to `al_install_system’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_install_keyboard’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_set_new_display_flags’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_set_new_display_option’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_create_display’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_init_primitives_addon’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_create_event_queue’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_get_keyboard_event_source’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_register_event_source’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_is_event_queue_empty’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_map_rgb’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_draw_filled_circle’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_flip_display’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_rest’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_destroy_display’|
    /usr/bin/ld: allegro.cpp|| undefined reference to `al_destroy_event_queue’|
    ||error: ld returned 1 exit status|
    ||=== Build failed: 17 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

    Like

    • monstruosoft · 24 Days Ago

      Debes indicarle al linker que use las librerías de Allegro. Yo no uso CodeBlocks pero si compilaras desde la línea de comandos sería algo así:

      gcc mi_programa.c -lallegro -lallegro_primitives

      En CodeBlocks debe haber alguna manera de definir las librerías que quieres usar.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s