2 minutes reading | Also available in 🇺🇸
Instalando o Allegro 4.2.2 no Linux x86
Como mencionei no meu ultimo post eu parcicipei do GameJam do Itaú cultural e desenvolvi um jogo com Allegro. Agora com o jogo pronto estou criando arquivos executáveis para divulgar e tinha me esquecido da diferença de arquitetura no Linux, assim compilei apenas para meu Linux x64.
Quando me dei conta que não funcionou no computador do trabalho por que eu tinha um binário x64, eu tive que instalar o Allegro no computador de lá para poder fazer funcionar também em Linux x86. Pensei eu:
“Vai ser moleza, assim como foi instalar o Allegro 4.2.2 no notebook x64”
E lá fui eu:
./configure
make
Ué…Deu um problema bizarro com o FNSTSW no make, então não vai ser tão fácil assim…E lá vamos nós procurar na internet. Procurando eu descobri que tem realmente um erro em uma parte Assembly do código do Allegro para x86 que está errada na versão 4.2.2 que provavelmente foi consertada nas versões futuras, mas nesse caso tive que arrumar na mão:
No arquivo src/i386/icpus.s
alterar a seguinte linha (tirar a que tem
um menos e colocar a que tem um mais):
fninit
movl $0x5A5A, %eax
- fnstsw %eax
+ fnstsw %ax
cmpl $0, %eax
jne is_fpu_not_found
E assim eu consegui compilar certinho! :D
Quando tentei rodar meu binário me deparei com o seguinte erro: “error while loading shared libraries: liballeg.so.4.2: cannot open shared object file: No such file or directory” ¬¬
Pesquisando na internet novamente eu descobri que estava faltando eu
adicionar o diretório /usr/local/lib
ao meu LD_LIBRARY_PATH
:
No meu .bashrc:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
OU
Editar o meu arquivo /etc/ld.so.conf
e incluir /usr/local/lib
no
final do arquivo e depois rodar o comando ldconfig
como root ;)
Com isso eu consegui finalmente compilar ojogo e fazer o meu binário rodar o meu jogo normalmente. :)
Espero que seja útil para mais alguem.