Caros colegas,
Migrando uma aplicação em C que utiliza a biblioteca
Allegro do Windows para o
Linux me deparei com uma grande diferença entre as duas plataformas.
A compilação, no Windows, muito provavelmente tu abre teu DevC++ adiciona aos parâmetros de compilação a entrada "-lalleg", aplica, tu manda compilar e... beleza foi pra conta do Papa.
Já no Linux, tu chega animadão, cheio de amor pra dar, manda seu "gcc -Wall <arquivo.c> -o programa -lalleg", e vem a decepção, um monte de referências indefinidas... recorremos ao guru Google e encontramos um monte de workarounds, pogs ou qualquer outro nome bonitinho e meigo pra boa e velha gambiarra, e todos eles tem em comum o comando `allegro-config --cflags` `allegro-config --libs` como parâmetros de compilação, alguns variam pra `allegro-config --cflags --libs`mas, em suma, tudo a mesma linda e elegante solução não documentada e engenhosa.
Não satisfeito, fui atrás, li, reli, rezei, fiz promessa, até que fui iluminado com a ideia a seguir, partindo do principio como as outras bibliotecas funcionam, e o resultado é o seguinte nobres colegas.
Como root ou sudo:
# cd /usr/lib
# ln -s liballeg-4.2.2.so liballeg.so
Pronto, teste agora com teu código fonte:
gcc -Wall <arquivo.c> -o programa -lalleg
... inacreditável, não? O famoso -lalleg funcionou.
Desde então durmo em paz comigo mesmo. Uma gambiarra a menos no mundo.
ei, bacana a dica!
Se você executar o "allegro-config --cflags --libs" sem as aspas, ele entrega o ouro: ele dá os caminhos onde o gcc deve esperar encontrar o allegro, e ele fina entre os apóstrofos pra fazer a saída do comando ser parte do outro.
Estes scripts *-config são clássicos do mundo gcc, existe inclusive o pkg-config que é um geralzão que unificou esses scripts todos, muitas bibliotecas tem ele.
Jogar no /usr/lib é jogar no caminho de busca padrão do ld, por isso fica limpa e elegante a linha de linkedição.
por fim, quero ver os exemplos rolando co m allegro, :D