Como compilar um programa a partir de um SOURCE CODE
Bom pessoal, no artigo de hoje vim ensinar como compilar um programa a partir de um source code. Na próxima semana será lançado um artigo complementar à este de como compilar o Kernel. Desta forma, se faz necessário que você entenda primeiro a lógica para compilar um programa usando source.
O que é um Source Code?
A instalação à partir de um source code é um tipo universal de instalação de pacotes, e funciona em qualquer distribuição Linux.
Neste exemplo, estarei instalando o Audacity, programa para edição de áudio e vídeo. Você pode realizar o download do programa clicando aqui.
Veja que, no próprio site do Audacity, há uma opção nomeada de source code:
Após efetuar o download do programa, um arquivo .tar.xz será baixado. Dependendo do software que você for instalar, ele terá outra extensão, mas sempre estará compactado de alguma forma.
Compilando a partir de um Source Code:
Abrir o terminal como root e acessar a pasta do programa:
$ sudo su
$ cd /home/mateus/Downloads
Agora, iremos extrair o arquivo:
$ tar xvf audacity-minsrc-2.1.3.tar.xz
Vamos acessar a pasta que foi criada e listar os arquivos que nela contém:
$ cd /home/mateus/Downloads/audacity-minsrc-2.1.3
$ ls --color
Preste bastante atenção nos arquivos grifados:
configure: Ele será executando com “./”. Mas, o que é ./configure? Bom, é um Shell Script para iniciar a configuração do aplicativo a ser instalado. Dentro deste arquivo há instruções que vão definir, por exemplo, o local de instalação das libs, local de instalação dos binários, links simbólicos, se as dependências estão instaladas, assim evitando problemas futuros durante o make. Depois de finalizado o configure, será gerado um arquivo chamado Makefile.
Tá, e o que é esse Makefile?
Makefile.am: Os arquivos Makefile são os que serão lidos pelo comando make. Você pode estar se perguntando: qual a função do comando make? Bem, esse comando executa as instruções que são escritas dentro do arquivo Makefile, que geralmente servem para compilar o programa. Quando um arquivo Makefile tem a extensão .am, significa que ele é lido pelo comando automake, que nada mais é do que um make evoluído com algumas outras funções, mas isso não vem ao caso agora.
Makefile.in: É um template que geralmente vem nos arquivos source. Quando rodamos o comando configure, ele se baseia neste arquivo e gera outro arquivo de nome Makefile (sem extensão) específico para o seu sistema.
Agora, vamos ver como instalar um programa usando make:
$ ./configure
O procedimento de configuração foi iniciado, mas, ocorreu um erro durante o processo:
Veja que, quando ocorre um erro, o arquivo Makefile não é criado:
Neste caso, é preciso instalar uma dependência que é o wxWidget. Sempre leia as instruções de instalação no site do programa que você vai tentar instalar, pois lá, provavelmente, estará informando a respeito das dependências.
Veja que no site do Audacity ele informa sobre esse erro:
Será necessário instalar a versão 3.0 do wxWidgets:
$ apt-get install libwxgtk3.0-dev
Agora, vamos rodar o configure novamente:
$ ./configure
Finalizou sem erros e o arquivo Makefile foi criado com sucesso:
Agora que o nosso arquivo Makefile foi criado, devemos de fato compilar o programa. Este é o procedimento que demanda mais tempo. O comando make, por padrão, utiliza somente 1 core do processador para efetuar o processo de compilação. A opção -j pode ser usada passando como parâmetro o número de cores do seu processador, assim ele irá utilizar todos os núcleos para que o processo seja mais rápido. Meu processador é um i5-6200U e tem 4 núcleos.
$ make -j4
OBS: Veja que interessante, em outra aba olhando o comando top, o uso do processador está em 89,4%, devido o uso do parâmetro -j.
Depois de finalizado o processo de compilação, devemos apenas instalar o que foi compilado usando o comando make install:
$ make install
E o que o comando make install faz?
Esse comando instala o que o make compilou, copiando todos os arquivos para seus devidos diretórios.
Depois disso, o programa foi instalado de fato e está pronto para ser usado:
Conclusão:
Bom pessoal, espero ter sido claro em minha explicação.
Aprenda também compilar o Kernel do Linux clicando aqui.
Obrigado, e até a próxima!
Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!