Compilando!

Deixe um Comentario
Nas distribuições GNU/Linux a instalação de novos softwares é realizada pelo gerenciador de pacotes de cada distro, assim pode-se instalar as aplicações da central de programas e de pacotes próprios do sistema com toda a facilidade que você pode ter. O maior esforço que terá de realizar é levar o cursor até o pacote, abri-lo e clicar em instalar, fim. Entretanto, algumas aplicações não são disponibilizadas na central de programas ou empacotadas para uma distro, mas como 99% das aplicações são de código aberto e também por causa do FHS (Filesystem Hierarchy Standard ou padrão para sistema de arquivos hierárquico), basta baixar o código fonte e compilar o software desejado em sua distro. O código fonte muitas vezes vem compactado com a extensão .tar.gz , .tar.bz2 ou outras semelhantes.

DON'T PANIC: NÃO ENTRE EM PÂNICO

Compilar um programa não é algo de extrema complexidade, as distribuições vem também acompanhadas de um excelente compilador. Os compiladores geram os arquivos executáveis que mais tarde serão utilizados pelo sistema. Vez ou outra você precisará mais do que simplesmente compilar o programa, terá também que cumprir todas as suas dependências, que é nada mais e nada menos que instalar outros pacotes que o software que você pretende compilar necessita.

Basicamente para compilar um programa basta descompactar o código fonte, entrar no diretório descompactado ou na raiz do diretório como algumas pessoas gostam de ressaltar e executar os seguintes comandos no terminal (Ctrl + Alt + T) que fazem todo o trabalho duro (mesmo!): 

./configure (verifica as características do sistema operacional, arquitetura, versões de bibliotecas, etc; gerando um arquivo de instruções que serão utilizadas pelo GCC. Coleção de Compiladores GNU) 

make (compila o código fonte a partir das instruções criadas do comando anterior.) 

make install (faz a instalação, copia os arquivos resultantes da compilação nos seus respectivos diretórios do sistema operacional. Geralmente só executa-se este comando com o Super Usuário.

Suponhamos que eu queira instalar um software que está na pasta com o criativo nome "A Fonte dos Binários" e irei compilar o código a partir do diretório raiz já extraído do arquivo. Utilizaremos o terminal de comandos para executar os procedimentos! No exemplo abaixo exponho os comandos e todas as saídas resultantes dos comandos e também numerei as ações que  requisitei do sistema pelo terminal de comandos.

Exemplo:
1. usuario@computador:~$ cd 'Documentos/A Fonte dos Binários'
   usuario@computador:~/Documentos/A Fonte dos Binários$ ./configure
   checando o tipo de compilação do sistema... x86_64-unknown-linux-gnu
   checando o tipo do anfitrião do sistema... x86_64-unknown-linux-gnu
   checando o gcc... gcc
   checando se o compilador C funciona... sim
   [...]
   checando outras configurações... estão todas OK!
2. usuario@computador:~/Documentos/A Fonte dos Binários$ make
   Fazendo todos em lib
   make[1]: Entrando no diretório `/Documentos/A Fonte dos Binários/lib'
   source='arquivo.c' object='arquivo.lo' libtool=yes \
 depfile='.deps/arquivo.Plo' tmpdepfile='.deps/arquivo.TPlo' \
 depmode=gcc3 /bin/bash ../config/depcomp \
 /bin/bash ../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../include  -D_LARGEFILE64_SOURCE   -g -O2 -c -o arquivo.lo `test -f 'arquivo.c' || echo './'`arquivo.c
   gcc -DHAVE_CONFIG_H -I. -I. -I../include -D_LARGEFILE64_SOURCE -g -O2 -c arquivo.c -MT arquivo.lo -MD -MP -MF .deps/arquivo.TPlo -o arquivo.o
   echo timestamp > arquivo.lo
   [...]
   Algumas coisas que compiladores fazem!
   [...]
   make[1]: Saindo do diretório `/Documentos/A Fonte dos Binários/lib ou outro que se tenha criado'
3. usuario@computador:~/Documentos/A Fonte dos Binários$ sudo make install
   [sudo] senha para usuario:
   Fazendo todos em lib
   make[1]: Entrando no diretório `/Documentos/A Fonte dos Binários/lib'
   make[2]: Entrando no diretório `/Documentos/A Fonte dos Binários/share'
   /bin/bash ../config/mkinstalldirs /usr/local/lib
    /bin/bash ../libtool --mode=install /usr/bin/install -c  libudffs.la
   /usr/local/lib/libudffs.la
   /usr/bin/install -c .libs/libudffs.lai
   /usr/local/lib/libudffs.la
   /usr/bin/install -c .libs/libudffs.a
   /usr/local/lib/libudffs.a
   ranlib /usr/local/lib/libudffs.a
   chmod 644 /usr/local/lib/libudffs.a
   PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
   ----------------------------------------------------------------------
   As bibliotecas foram instaladas em:
      /usr/local/lib
   make[1]: Saindo do diretório `/Documentos/A Fonte dos Binários/lib ou outro que se tenha criado'
4. usuario@computador:~/Documentos/A Fonte dos Binários$ 
- Caraca, mal pude ver os seus movimentos!
Calma, vejamos as descrições do que aconteceu no nosso terminal de experimento:

1. Já tendo extraído os arquivos do pacote tar.gz, entro na pasta raiz desta extração com o comando cd e especificando o diretório com aspas simples para nomes compostos > cd '/Documentos/A Fonte dos Binários' e logo em seguida digito o comando ./configure

2. O terminal me informa que está tudo certo, então digito o comando make e os compiladores começam a fazer os arquivos executáveis.

3. Após o término do comando anterior insiro o próximo comando (make install) com privilégios de administrador (sudo). Então os arquivos executáveis criados são copiados para seus respectivos diretórios com suas devidas permissões

4. The End! 

Como você pode observar, não é nada difícil realizar os procedimentos para a compilação do software! Lembre-se de SEMPRE LER o arquivo README e/ou INSTALL, estes arquivos possuem instruções específicas sobre o procedimento de compilação para os determinados softwares, como a instalação de uma dependência ou até mesmo se será necessário utilizar outro tipo de compilador sem ser o padrão do sistema!

Tux segurando o Guia dos Aventureiros em Linux!
Imagem: Tux segurando o Guia dos Aventureiros em Linux!

Ahh!?!, e mais uma coisa... duas na verdade... Tenha sempre uma toalha e não entre em pânico!

0 comentários:

Postar um comentário