Categories
Programação Tutoriais Ubuntu

Como compilar código fonte de programas no Linux

A função de um compilador é traduzir as instruções, no arquivo de código fonte, dadas pelo programador, para instruções legíveis pelo computador — o resultado é comumente chamado de código binário e é executável pelo seu sistema.
É do código binário que você precisa para rodar e usar um programa — e é neste “formato” que os programas são vendidos para as pessoas: por que estão prontos para serem usados.
Imagem de capa do tutorial de compilação de programas
Por outro lado, se você deseja saber como um programa funciona internamente ou quiser modificá-lo, adicionando recursos e funcionalidades, você precisa do código fonte.
Depois de alterado o código fonte, você pode usar o compilador para produzir um novo binário.
Se você baixou um arquivo com o código fonte de algum programa, antes de instalá-lo, vai precisar compilar.


O que é compilação — A compilação diz respeito ao processamento de arquivos com o código fonte (.C, .CC, .CPP etc. — caso a linguagem de programação, usada pelo desenvolvedor, seja C ou C++) e à criação de um arquivo “objeto” — este último passo, não cria qualquer coisa útil pro usuário final, mas apenas as instruções em linguagem de máquina, correspondentes ao que foi compilado do código fonte.
Se você compilar e não linkar, vai acabar com três arquivos separados — cada qual com um nome semelhante a nome_de_arquivo.o ou nome_de_arquivo.obj. A extensão vai depender do seu compilador.
Estes arquivos precisam ser linkados para que se tornem executáveis.
Você verá como fazer isto, mais pra frente.


Normalmente, o código fonte vem compactado com várias outras bibliotecas — que são arquivos de código fonte acessório ao código principal (esta é uma explicação bem simplista).
Além destes, há outros arquivos de texto, que servem para dar instruções sobre os outros arquivos, sobre como compilar ou instalar todo o aplicativo.
Entre estes arquivos, o README (leia-me) e o INSTALL, são comumente encontrados.
O ideal é que estes arquivos contenham instruções completas sobre como compilar e instalar — mas, este nem sempre é o caso.
Por isto é que estou escrevendo este texto: para tentar ajudar os novatos.

Exemplo de compilação e instalação de um programa

Depois de baixar e instalar o pacote com o fonte, o procedimento mais comum é descompactar, ler o conteúdo dos arquivos README e INSTALL, configurar a compilação e fazer a instalação. Veja:

tar -xzvf programa.tar.gz
cd programa/
more README
more INSTALL
./configure
make
make install

Nos próximos tópicos, vamos rever estes passos, com um pouco mais de detalhamento.

Como descompactar o arquivo com o código fonte

Daria para fazer um post inteiro apenas para abordar a descompactação de arquivos — ainda assim, vou tentar condensar o máximo o assunto.
Cada desenvolvedor escolhe um programa de compactação para envolver e empacotar seu código fonte.
Através da compactação, o desenvolver guarda vários (podem ser centenas ou milhares de) arquivos dentro de um só pacote. Assim, é mais fácil transferir via Internet.
O programa para desempacotar varia, dependendo do tipo de pacote usado pelo desenvolvedor.
A extensão do arquivo-pacote é que indica o programa que deve ser usado para desempacotá-lo.
Veja, na tabela abaixo, exemplos de nomes e extensões de arquivos e os comandos a usar para descompactá-los:

nome do arquivo como descompactar
exemplo.tar.gz ou exemplo.tgz tar -xvzf exemplo.tar.gz ou tar -xvzf exemplo.tgz
exemplo.tar.bz2 ou exemplo.tbz tar -xvjf exemplo.tar.bz2 ou tar -xvjf exemplo.tbz
exemplo.tar tar -xvf exemplo.tar
exemplo.zip unzip exemplo.zip

Sugiro a leitura do meu tutorial sobre o comando tar (com 9 exemplos didáticos), se ainda tiver alguma dúvida especificamente sobre este comando.

Configuração

Dentro do diretório onde você descompactou os arquivos, deve haver um script chamado configure. Use o comando ls para obter uma listagem dos arquivos disponíveis no diretório atual.
Usualmente, o script configure pode ser executado de diversas formas. Veja algumas das mais comuns.
Para obter ajuda genérica sobre a execução do configure:

./configure --help

Para executar o script com suas opções padrão:

./configure

Para especificar o meu diretório home para instalar o binário executável, depois da compilação:

./configure --prefix=~/

Normalmente, você não precisa especificar, com a opção --prefix o diretório de instalação. Pode deixar que o programa siga seus padrões (usualmente, o diretório /usr/local/).

Compilando, instalando e desinstalando

Após a configuração, rode o utilitário make — para ler o arquivo Makefile, no diretório local e compilar o programa para você.
Devo adverti-lo(a), jovem padawan. que compilar um programa pode ser um tanto demorado. Mas programas simples, de tamanho reduzido, podem levar apenas 1 ou 2 minutos, como o mpg123.
Dependendo da velocidade do seu computador, pode levar horas ou dias para compilar um set de aplicativos como o KDE.
Enfim, para concluir a instalação do aplicativo, use o comando make install, deste jeito:

make install

Se quiser desinstalar, mais tarde, execute (dentro do mesmo diretório em que fez a instalação) o seguinte comando:

make uninstall

A desinstalação nem sempre é tão simples assim. O comando acima, acima, [e um conceito universal, que nem sempre é posto em prática pelos desenvolvedores.
Se ela não funcionar, você vai precisar ler a documentação do programa sobre como proceder com a desinstalação.

Referências

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

7 replies on “Como compilar código fonte de programas no Linux”

Primeiramente obrigado pelo maravilhoso material. Gostaria de saber se é desta forma que faço também as alterações do código fonte e depois compilo? Exemplo alterar o nome de botão, acrescentar um botão etc.

Olá Elias,
Primeiramente, parabéns pelo trabalho, está muito bom.

Para pessoas como eu que, apesar de muita experiência com manutenção e desenvolvimento em Windows, ainda estou iniciando no Linux para aumentar conhecimento, blogs como este são de muita ajuda.

Me tira mais uma dúvida: porque no linux para executar um script, como install.sh ou outro qualquer, precisamos colocar um ponto e uma barra na frente do nome do script. Poque não posso apenas digitar o nome do script? Não encontrei essa informação em nenhum lugar. Apenas dizem para fazer assim e ponto. Mas como gosto de conhecer a fundo as ferramentas que uso, não me conformo em não saber porque deve-se fazer assim.

Mais uma vez parabens e obrigado.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.