Ir ao conteúdo
  • Cadastre-se

Problemas a bíblioteca Allegro


Ater
Ir à solução Resolvido por KXSY,

Posts recomendados

Olá a todos. Primeiramente, não sei se este é o local certo para essa dúvida. Desculpem qualquer coisa.

Estou tendo dificuldades para compilar codigos-fonte que necessitam da biblioteca Allegro. Provavelmente isso se deve a falta de experiência com sistemas Linux (uso Debian a 6 meses). Já foi um parto para mim conseguir instalar a API, mas agora o problema é saber referenciar os arquivos cabeçalho. Até agora, eu só estive compilando a partir do comando "gcc arquivo.c -o arquivo". Porém, ao que me parece, o comando para compilar referenciando a allegro é outra, pois o compilador reclama dizendo que não encontrou a referência das funções. Semelhante a quando você usa "math.h" sem o parâmetro "-lm" na linha de comando. Alguém sabe como resolve isso? Já olhei a documentação, tanto da Allegro quanto do GCC, mas até agora nada.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Ater disse:

Provavelmente isso se deve a falta de experiência com sistemas Linux (uso Debian a 6 meses).

Recomendo o livro "como o linux funciona" ele é muito bom pra que está iniciando no mundo linux.

1 hora atrás, Ater disse:

Até agora, eu só estive compilando a partir do comando "gcc arquivo.c -o arquivo". Porém, ao que me parece, o comando para compilar referenciando a allegro é outra, pois o compilador reclama dizendo que não encontrou a referência das funções. Semelhante a quando você usa "math.h" sem o parâmetro "-lm" na linha de comando. Alguém sabe como resolve isso?

Isso é bem fácil de resolver, se nada mudou desde quando eu usei allegro (usei a versão 4.x) basta você colocar -lallegro que já vai compilar, mas só se você estiver usando só allegro.

 

vou te dar uma dica sobre compilação com bibliotecas externas, quando você tiver no seu código fonte assim

#include <stdio.h>
#include <stdlib.h>
#include "MyLib.h"
#include "YourLib.h"

você tem que avisar ao linker que está colocando bibliotecas não padrões no seu código fonte, sendo assim necessário usar a diretiva -l do compilador (o GCC nessa ultima edição está ignorando o fato de não ter a diretiva -l quando os headers(=cabeçalhos) estão na mesma pasta do código fonte).

 

Para compilar um código com os headers que eu apresentei acima, você teria que colocar na linha de comando "gcc meu_fonte.c -o meu_app -lMyLib -lYourLib"

então toda vez que você tiver um hearder no seu código (exemplo:"OurLib.h") você vai colocar o nome dele na diretiva de compilação (exemplo:"-lOurLib") sem o ".h".

Link para o comentário
Compartilhar em outros sites

@KXSY

Eu já havia tentando isso também, mas sem sucesso. Continua dando "referência não definida". Aliás, eu nem ao menos sei se consegui instalar direito, eu não entendo muito de compilar codigo-fonte. Apenas sigo o passo-a-passo da documentação, mas ainda assim tem chance de dar errado, sabe-se lá por que. Embora eu também tenha instalado pelo terminal através de um "apt-get install liballego5-dev". De qualquer forma, já decidi que vou iniciar o meu projeto no Windows mesmo, é um pouco mais fácil, ao menos por enquanto.
 

 

5 horas atrás, KXSY disse:

Recomendo o livro "como o linux funciona"

Estava olhando o livro aqui, é exatamente o que eu estava procurando. Não encontrei um bibliografia muito boa de Linux. Lerei sim, com certeza, obrigado.

Link para o comentário
Compartilhar em outros sites

  • Solução
14 minutos atrás, Ater disse:

Embora eu também tenha instalado pelo terminal através de um "apt-get install liballego5-dev".

Se não sabe usar o apt direito use o synaptic, eu acabei de instalar aqui e tinha tanta dependência que você perderia 3 dias tentando resolver.

dep.png.a28d9e7338beb7fe841d9f1082c09530.png

Recomendo desinstalar pelo apt e reinstalar pelo synaptic.

 

18 minutos atrás, Ater disse:

já decidi que vou iniciar o meu projeto no Windows mesmo, é um pouco mais fácil, ao menos por enquanto.

Boa sorte, da ultima vez que eu tentei perdi 3 horas para conseguir compilar uma janela.

 

as bibliotecas no linux ficam em "/usr/include/" no caso do allegro você pode digitar no terminal "cd /usr/include/allegro5/" e dar um "ls -l" para ver todos os arquivos.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@KXSY

Certo, acho que o problema está praticamente resolvido. As dependências eu já tinha instalado, pois o tutorial que usei de instalação do allegro pelo pacote "liballegro5-dev", já considerava elas. Então fui atrás de outros códigos para testar, e usando a diretiva que você passou, "-lallegro", consegui compilar alguns códigos. Ao meu ver, o problema estava na linkagem mesmo, pois eu não estava sabendo fazer referência às bibliotecas. Por exemplo, eu estava tentando compilar um source exemplo do allegro chamado "ex_blend_target.c", fazendo referencia a todos os headers com -l e ainda dava problema. Mas esse caso é exceção, o resto compilou e executou corretamente.
1775263462_Capturadetelade2019-12-0118-51-59.thumb.png.3a965f53d7ece04cf52369f38937a0b3.png

 

Você não sabe como me ajudou. Acho que eu fiquei mais de um dia inteiro nisso já, fui atrás até da documentação do gcc e acabei lendo sobre a opção -l, mas não entendi como era pra usar. Na verdade, o que eu estava tentando fazer era dar -L ou -I (i maiúsculo) seguido do endereço dos headers do allegro, mas dava no mesmo. O problema foi a minha burrice com o Linux mesmo, eu já imaginava que o problema era simples. O melhor é que eu não vou ter que voltar pro Windows.

Enfim, tem mais alguma dica pra um iniciante Linux como eu? O livro que você indicou eu já vou devorar nestas férias. Ainda mais agora que quero começar a usar Manjaro, espero não ter este mesmo problema novamente. Muito obrigado, ajudou muito.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, Ater disse:

tem mais alguma dica pra um iniciante Linux como eu?

Sim utilize o man, ele é o seu maior amigo no linux.man.thumb.png.5d1011aa7d982909096320abe8872e7e.png

Eu acho bem melhor as paginas do man, do que as da GNU sobre o GCC.

Isso poupa tempo em ficar procurando documentação, porque a documentação já está na sua maquina.

 

Aprenda a utilizar o vim, porque até o próprio man usa as teclas de atalho do vim.

 

Troque para o linux mint que é bem mais fácil, já que você é iniciante no mundo linux.

 

Programe em ambientes seguros como maquinas virtuais, isso ajuda a não quebrar o sistema principal, podendo acarretar de você acabar tendo uma conversa gostosa com o busybox (se você puder usar uma maquina virtua é claro).

 

Não confie em IDES para fazer o serviço pesado.

 

Aprenda a usar o make, é o mais importante de tudo use com mais frequência a diretiva do GCC "-fsanitize=address" você vai se surpreender com o tanto de c4gada que nós fazermos em C sem perceber.

 

isso tudo são dicas de quem já quebrou muito a cara no linux (hehe vai fazer 10 anos agora de linux) é programava só para windows.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...