Compilando e Instalando a biblioteca Allegro 5 no Ubuntu

Padrão

Olá pessoal! Neste post vou mostrar como obter a nova versão da biblioteca Allegro e como instalá-la em um computador rodando Ubuntu. Realizei os testes utilizando o Ubuntu 11.04, mas o processo deve ser o mesmo em versões anteriores ou mais novas.

Bom, o primeiro passo é instalarmos as dependências para a compilação e execução da biblioteca. Abra uma janela do Terminal. Nela, digite o seguinte comando para instalar as dependências obrigatórias:

sudo apt-get install build-essential subversion cmake xorg-dev libgl1-mesa-dev libglu-dev

Neste processo, será pedido sua senha e a confirmação para iniciar o download dos pacotes. O próximo passo é instalar as bibliotecas necessárias à compilação dos módulos da Allegro 5. Para isso, digite no Terminal:

sudo apt-get install libpng-dev libz-dev libcurl4-gnutls-dev libfreetype6-dev libjpeg-dev libvorbis-dev libopenal-dev libphysfs-dev libgtk2.0-dev libasound-dev libflac-dev libdumb1-dev

Por último, caso queira também construir os arquivos de documentação da biblioteca, execute no Terminal:

sudo apt-get install exuberant-ctags dvi2ps dvipdfmx latex2html pandoc

Após concluir as instalações dos pacotes, vamos baixar o código-fonte da Allegro 5 para compilarmos. Ainda no Terminal, digite o comando:

svn co https://alleg.svn.sourceforge.net/svnroot/alleg/allegro/branches/5.0 allegro-5.0

Este comando baixará o código-fonte dos repositórios oficiais e colocará em uma pasta chamada allegro-5.0. Agora, vamos navegar para a pasta e preparar os arquivos para a instalação. No Terminal, digite os seguintes comandos:

cd allegro-5.0

cmake -DCMAKE_INSTALL_PREFIX=/usr .

Com isso, já teremos os arquivos preparados para realizar a instalação. Para finalizar, digite no Terminal:

make

sudo make install

Pronto! Após a conclusão do processo, já deveremos ter a biblioteca devidamente instalada e pronto para ser utilizada.

Para testarmos se a biblioteca foi instalada corretamente, edite um arquivo no gedit ou no vim com o seguinte código (no meu caso, salvei com o nome de main.c:

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

int main(int argc, char *argv[])
{
	ALLEGRO_DISPLAY *janela = NULL;

	if (!al_init())
	{
		fprintf(stderr, "Falha ao inicializar a Allegro 5\n");
		return -1;
	}

	janela = al_create_display(640, 480);
	if (!janela)
	{
		fprintf(stderr, "Falha ao criar a janela\n");
		return -1;
	}

	al_clear_to_color(al_map_rgb(255, 255, 255));

	al_flip_display();

	al_rest(10.0);

	al_destroy_display(janela);

	return 0;
}

Para compilar e executar o programa, basta digitar no Terminal:

gcc -lallegro -oteste main.c

./teste

Pronto! Se deu tudo certo, aparecerá uma janela preenchida de branco que permanecerá na tela por 10 segundos.

Espero que ajude, e aguardem por mais posts sobre a Allegro 5! Até a próxima! 😀

44 comentários sobre “Compilando e Instalando a biblioteca Allegro 5 no Ubuntu

  1. camila

    olá.
    fiz tudo como mandava acima mas dá esse erro:
    main.c: In function ‘main’:
    main.c:27:24: error: ‘display’ undeclared (first use in this function)
    main.c:27:24: note: each undeclared identifier is reported only once for each function it appears in

    o que eu faço ?

  2. Emerson Zotti

    oi fiz tudo o que diz ai em cima,
    compila mas na hora de rodar o programa aparece esse erro:
    failed to create drawable
    X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
    Major opcode of failed request: 55 (X_CreateGC)
    Resource id in failed request: 0x4400002
    Serial number of failed request: 25
    Current serial number in output stream: 27

    saberia o porque?

    • Rafael

      Nunca tive esse tipo de problema executando aplicativos em Allegro 5 (já fiz testes em pelo menos uns 5 computadores). Pesquisando sobre o erro, encontrei esse tópico no fórum da Allegro dizendo que o problema pode ser o fato de estar executando em máquina virtual. É o seu caso? Se for, aparentemente é algum problema na ativação do OpenGL.

  3. Daniel San

    Alguém já conseguiu instalar o Allegro 5 no Ubuntu 11.10? Eu segui os passos desse tutorial e apresenta o seguinte erro quando compilo:
    /tmp/ccuTfqPo.o: In function `main’:
    main.c:(.text+0x22): undefined reference to `al_install_system’
    main.c:(.text+0x66): undefined reference to `al_create_display’
    main.c:(.text+0xb0): undefined reference to `al_map_rgb’
    main.c:(.text+0xe9): undefined reference to `al_clear_to_color’
    main.c:(.text+0xee): undefined reference to `al_flip_display’
    main.c:(.text+0xfb): undefined reference to `al_rest’
    main.c:(.text+0x107): undefined reference to `al_destroy_display’
    collect2: ld returned 1 exit status
    Me ajudem por favor!!! Preciso instalar o Allegro para fazer um projeto da minha faculdade. Já segui alguns tutorias mais ainda nada :/
    http://www.rafaeltoledo.net/out-of-series-3-configurando-a-biblioteca-allegro-no-codeblocks-ubuntu/
    https://sites.google.com/a/liesenberg.biz/cjogos/home/software/ambiente-code-blocks-allegro-5
    e ainda não consegui fazer funcionar nem no Terminal nem no Code::Blocks

    • Rafael

      Você provavelmente não está configurando o linker. Adicione a opção -lallegro na sua IDE ou na linha de comando do GCC (após seguir os passos descritos neste post).

      • Danilo Alves

        Olá Rafael, boa tarde.
        Eu estou tendo o mesmo problema do Daniel. Porém não entendi como devo resolvê-lo.
        Mesmo executando a linha de comando “gcc -lallegro -oteste main.c” o erro persiste.

  4. Daniel San

    Cara muito o brigado por responder tão rápido. Fiz o que você disse mas agora deu o seguinte problema:

    daniel@GNULINUX:~$ gcc -Wall main.c -o teste -lallegro
    main.c:1:21: erro fatal: allegro.h: Arquivo ou diretório não encontrado
    compilação terminada.

    Percebi que quando uso #include ele da um outro erro no Code::Blocks: cannot find -lallegro_physfs

    Quando uso #include da esse erro ai de cima no terminal e no Code::Blocks.

    Segue o link da pergunta que eu fiz no ubuntuforum-br sobre isso, onde eu coloquei tudo o que eu já consegui fazer e o que esta dando errado, está tudo bem explicado la.
    http://ubuntuforum-br.org/index.php?topic=90517.msg498051#msg498051
    Se puder mu ajude com isso, ficarei muito grato 🙂

    • Rafael

      Esse erro diz que nem o arquivo de cabeçalho foi encontrado. Verifique o caminho, faça uma busca no sistema pra ver se os arquivos foram instalados corretamente.

  5. Daniel San

    O pior é que esta certo mesmo, o #include e tudo mais, pois um amigo meu está usando Windows e funciona de boa. O problema é como se esses arquivos não estivessem ligados ao compilador. Como se eles só tivessem sido copiados para la e mais nada. Alguma ideia? Nem o Code::Blocks está Compilando os códigos com o Allegro. Só pega se eu instalar o allegro 4.2.2 porque esta nos repositórios ai o Ubuntu instala tudo via apt-get.

    • Rafael

      É cara… então não sei mesmo. As bibliotecas, quando você roda o “make install” na hora da compilação, são instaladas em /usr. É lá que o GCC procura os arquivos na hora de compilar (pastas include, lib e bin). Então é realmente estranho não estar encontrando…

  6. Matheus Marques

    Rafael seu blog me ajudou muito com o Allegro, mas eu ainda nao consegui rodar o Allegro de forma efetiva. Por alguma razão ra um erro em tempo de execução e eu nao sei resolver. Esse problema esta no dentro do vector.c dentro dos subdiretorios da pasta Allegro-5.0.6

    al_vector_alloc_back: Assertion `vec->_itemsize-> 0′ failed
    Aborted

    Voce tem idea do que possa ser isso?

    • Olá Matheus!

      Você está conseguindo compilar outros programas normalmente (ex. apps em console)? Se sim, você já conseguiu compilar outros aplicativos em Allegro 5? Durante a instalação houveram erros ou avisos (warnings)? Dê uma conferida nesses pontos, pois pode lhe ajudar a encontrar o erro. Se nada disso adiantar, você pode pedir uma ajuda nos fóruns oficiais (http://www.allegro.cc/forums/). Nos exemplos que rodei, todos no Windows 7 e Ubuntu 11.10, não tive esses problemas.

  7. matheus

    amigo eu uso o windows e esta dando o seguinte erro [Linker error] undefined reference to `_imp__al_install_system’ espero que possa me ajudar
    obrigado

    • Olá Matheus! No primeiro dos tutoriais de Allegro (http://www.rafaeltoledo.net/tutorial-allegro-5-criando-uma-janela/), eu falo em como instalar a versão para Windows. Esse erro que você teve ocorre porque ele não está encontrando as bibliotecas para linkar com o aplicativo. Se você está utilizando Windows, e assumindo que você já tem as bibliotecas da Allegro na pasta do seu compilador, basta adicionar a seguinte opção ao linker:

      -lallegro-5.x.x-mt

      Por exemplo, se estiver utilizando a versão 5.0.6:

      -lallegro-5.0.6-mt

      Espero ter ajudado! 🙂

  8. João Paulo Albuquerque de Lima

    fiz tudo como indicado, mas no segundo passo o terminal apresenta esse erro:

    “Lendo listas de pacotes… Pronto
    Construindo árvore de dependências
    Lendo informação de estado… Pronto
    Note, a seleccionar ‘libpng12-dev’ em vez de ‘libpng-dev’
    Note, a seleccionar ‘zlib1g-dev’ em vez de ‘libz-dev’
    Note, a seleccionar ‘libjpeg62-dev’ em vez de ‘libjpeg-dev’
    O pacote libasound-dev é um pacote virtual fornecido por:
    liboss4-salsa-dev 4.2-build2004-1ubuntu2
    libasound2-dev 1.0.24.1-0ubuntu10
    Você deveria selecionar explicitamente um para instalar.

    E: O pacote ‘libasound-dev’ não tem candidato para instalação”

    ai quando vou tentar compilar o codigo ele apresenta esse erro:

    “01.c:2:30: erro fatal: allegro5/allegro.h: Arquivo ou diretório não encontrado
    compilação terminada.”

    sera que tem como me ajudar? estou precisando instalar a allegro para poder fazer um projeto da faculdade.

  9. João Paulo Albuquerque de Lima

    rafael, fiz o que diz no wiki oficial mas tbm continua ñ achando a biblioteca, sera que falta associar a biblioteca ao gcc, tipo uma variavel de ambiente? do windows.

    • Olá João! Compilei a biblioteca da forma como está no tutorial em uma instalação “limpa” do Ubuntu 12.04, e obtive erros de referência na hora de compilar.

      /tmp/ccoBTtwp.o: In function `main':
      main.c:(.text+0x22): undefined reference to `al_install_system'
      main.c:(.text+0x66): undefined reference to `al_create_display'
      main.c:(.text+0xb0): undefined reference to `al_map_rgb'
      main.c:(.text+0xe9): undefined reference to `al_clear_to_color'
      main.c:(.text+0xee): undefined reference to `al_flip_display'
      main.c:(.text+0xfb): undefined reference to `al_rest'
      main.c:(.text+0x107): undefined reference to `al_destroy_display'
      collect2: ld returned 1 exit status

      Para resolver, primeiramente, rodei o ldconfig:

      sudo ldconfig

      Ainda não tinha resolvido. Então, experimentei apenas modificar a ordem dos parâmetros e, misteriosamente, funcionou:

      gcc main.c -omain -lallegro

      Acredito que isso possa ser alguma coisa com relação a uma versão nova do GCC.

      Espero ter ajudado!

  10. João Paulo

    opa, ja é uma noticia boa, mais tarde quando eu pegar o meu not vou tentar fazer esse esquema, espero que funcione aqui tbm.

    desde ja agradeço pela atenção rafael.

  11. João Paulo Albuquerque de Lima

    oi rafael, aqui continua dando o mesmo erro. dizendo que não encontrou a biblioteca allegro so que ela ja esta instalada, tem algum parametro para fazer o gcc reconhecer onde a allegro esta?

    • Olá João Paulo!

      Tente executar o seguinte comando no Terminal:

      pkgconfig --libs allegro-5.0

      Se o comando retornar, é sinal que a biblioteca foi instalada corretamente

  12. João Paulo Albuquerque de Lima

    o comando é que ñ ta dando certo

    $ pkgconfig –libs allegro5
    No command ‘pkgconfig’ found, did you mean:
    Command ‘pkg-config’ from package ‘pkg-config’ (main)
    pkgconfig: command not found

  13. João Paulo Albuquerque de Lima

    ta retornando normal, ñ to entendendo pq ñ ta compilando. as pastas tão ok, os arquivos allegro.h e aleegro5.h estão no pc mas nada da certo :S

    • Cara… muito estranho isso… a última sugestão que eu poderia dar é de tentar usar a saída do pkg-config no próprio GCC:

      gcc main.c -osaida $(pkg-config --libs allegro-5.0)
  14. João Paulo Albuquerque de Lima

    opa rafael, passando pra avisar que achei o erro, os arquivos nao estavam na pasta usr/include, agora vou ter que copiar arquivo por aquivo pra la.
    valeu pela ajuda.

  15. Arthur

    Queria saber porque quando eu compilo usando o comando:

    gcc -lallegro -oteste main.c

    aparecem os seguintes erros:
    root@albm:/home/arthur/Área de Trabalho# gcc -lallegro -oteste main.c
    /tmp/cc3QzHhF.o: In function `main’:
    main.c:(.text+0x28): undefined reference to `al_install_system’
    main.c:(.text+0x75): undefined reference to `al_create_display’
    main.c:(.text+0xd0): undefined reference to `al_map_rgb’
    main.c:(.text+0xf3): undefined reference to `al_clear_to_color’
    main.c:(.text+0xf8): undefined reference to `al_flip_display’
    main.c:(.text+0x106): undefined reference to `al_rest’
    main.c:(.text+0x111): undefined reference to `al_destroy_display’
    collect2: ld returned 1 exit status

    Mas quando eu compilo assim:
    gcc -Wall main.c -o teste -lallegro

    Da tudo certo normal ?

  16. Vinícius Oliveira

    Não consegui compilar o código, apresenta o erro main.c:2:21: erro fatal: allegro.h: Arquivo ou diretório não encontrado. Na instalação não foi criada nenhuma pasta em usr/lib, include, bin. Eu criei essas pastas em include e lib e passei os arquivos que estavam nas pastas include e lib que estavam dentro da pasta allegro-5.0 , que foi criado na instalação. Eu não encontrei nenhuma pasta bin. Que pasta eu deve mover para usr/bin?

  17. Ediomar Lucas Ruzycki

    Ei rafael sou novo em ubuntu :p… o meu da esse erro: *** sem regra para processar o alvo ‘sudo’. pare. isso esta ocorrendo no ultimo passo … Oque eu faço???

  18. Rich-san

    Instalei a biblioteca corretamente com sucesso, porém qdo eu executo o codigo compilado fornecido no tutorial, me retorna apenas uma tela preta que só é fechada se eu interromper a aplicação com ctrl+c, no terminal aparece a seguinte mensagem:

    X Error of failed request: BadAlloc (insufficient resources for operation)

    Major opcode of failed request: 154 (GLX)

    Minor opcode of failed request: 24 (X_GLXCreateNewContext)

    Serial number of failed request: 27

    Current serial number in output stream: 29

    acho que tem algo errado né?

  19. Lucas Emanuel

    Opa… Cara, eu fiz tudo como no tutorial e estava resultando em erros de referência. Eu executei os comandos que você explicou nas respostas, então deu erro de diretório, peguei os arquivos da “allegro” e o “allegro.h” e joguei tudo no allegro5, e agora está dando erro do: ALLEGRO_DISPLAY unknown type name.
    Poderia me ajudar?

Deixe uma resposta