- Conteúdo:
- Introdução (arquivos tar.gz)
- Instalação (compilando os sources)
- Vantagens (binários x fontes)
- Dependências
Introdução:
Neste artigo abordarei uma dúvida comum dos iniciantes no Linux: como compilar programas.
Os tópicos abaixo referem-se aos procedimentos mais comuns para compilar software livre, além de suas vantagens, mas podem não se aplicar a todos os casos. A regra é: leia o README (além de documentos relacionados que acompanham o programa), para informações sobre o procedimento mais específico de compilação.
Para prosseguir, certifique-se de ter as ferramentas de desenvolvimento necessárias em seu sistema (série D).
Se o fonte .tar.gz seguir os padrões GNU, ele deve conter os seguintes arquivos em seu diretório principal:
- INSTALL
-
Como todos os pacotes GNU são instalados da mesma forma, este é um documento padrão.
- NEWS
-
Últimas notícias sobre o projeto.
- README
-
Informações essenciais, como a explicação do propósito do programa e de procedimentos especiais de instalação.
- COPYING
-
GNU General Public License.
- AUTHORS
-
Lista dos principais contribuintes do projeto.
- ChangeLog
-
Uma lista formatada contendo o histórico das mudanças que ocorreram no pacote, por quem e quando. Usada para acompanhar o trabalho no projeto.
Sobre o formato do arquivo tar.gz, em geral, o primeiro número representa a versão principal do programa. O segundo número representa uma versão menor de lançamento, quando apenas pequenas mudanças são adicionadas ao programa. O último número é o número do patch, ou nível de patch, e geralmente representa correções de bugs.
Instalação:
Basicamente, após adquirir o fonte, descompacte-o desta forma:
cd /opt/src // diretório que conterá os fontes
tar -zxvf fonte-1.2.3.tar.gz // descomapactando o programa fonte
cd fonte-1.2.3 // entrando no diretório
principal do programa
Configure para seu sistema e, finalmente, compile o programa:
./configure
make
make install
Só isso. Esta é a forma mais comum de se compilar um programa.
O script configure é gerado pelo autoconf. Antes de executá-lo, digite:./configure --help para ter uma listagem das suas opções de compilação. Uma opção comum é usar --prefix=/usr para definir este como o diretório alvo de instalação.
O GNU make será o responsável pela compilação, através das instruções contidas no Makefile gerado pelo script de configuração (configure).
Apenas para o make install é necessário ter privilégios de root, pois este comando instalará o(s) arquivo(s) compilado(s) em seus diretórios comuns, como /usr/bin (binários), /usr/lib (bibliotecas) e /usr/man (manual).
Para desinstalar, o comando é make uninstall. Se desejar recompilar o programa, e reconfigurá-lo, digite antes o comando make distclean para apagar o cache, ou make clear && rm config.cache caso o distclean não funcione.
Alguns programas, como o nedit, não possuem uma regra de install no makefile. A forma mais simples de se instalar um programa, na realidade, é através do comando:
# install -m 0755 nedit /usr/bin
O parâmetro -m indica a permissão. Outro parâmetro comum é o -s, que indica ao install para remover símbolos de debug, e assim gerando um executál de menor tamanho.
Vantagens:
E qual a vantagem disto sobre a utilização de pacotes binários pré-compilados?
O código-fonte disponível e aberto é a base do GNU/Linux. As possibilidades trazidas pelo software livre são muitas. Com o código do programa podemos:
- Conhecer como funciona...
- Modificar...
- Otimizar...
- Adicionar funcionalidades...
- Portar para varias plataformas...
- Corrigir erros...
- Reaproveitar...
- Aprender...
Muitas vezes é necessário partir dos fontes, pois o pacote binário pode não conter as opções que você precisa. E nem sempre pacotes estão disponíveis para sua distro.
Além disto, ao compilar um programa através dos fontes, ele será adaptado à sua máquina, e não a uma máquina genérica. Por exemplo, compilar o X com otimizações para seu MMX traz melhorias na performance geral deste software.
Através dos fontes você pode também aplicar patches, o que não é possível em arquivos binários.
Dependências:
O script configure deve detectar eventuais problemas de dependências.
Se ele retornar que há uma biblioteca faltando ou que a versão é incorreta, e você tiver a biblioteca, procure nas opções do configure uma forma de especificar o caminho correto desta lib (por ex: ./configure --with-qt-dir=/usr/lib/qt2).
A biblioteca deve estar em algum caminho especificado no /etc/ld.so.conf. Para adicionar caminhos, execute como root ldconfig. Para verificar posteriormente as dependências do arquivo binário, digite ldd programa. Para listar as bibliotecas disponíveis: ldconfig -p.
|