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.
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
- Baixe, compile e instale o mpg123 player — com este exemplo real e simples, vai ser fácil entender o processo.
- O comando tar, em 9 exemplos práticos.
- Compiling Linux Software from source code. (English)
7 replies on “Como compilar código fonte de programas no Linux”
Muito bom, jovem!
Obrigado, pelo “jovem”… 🙂
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.
Sim.
Este método dá acesso ao código fonte e, depois de alterá-lo, é só seguir com o procedimento normal de compilar a instalar.
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.
Boa pergunta! 😉
Leia a resposta completa aqui.
Parabéns pelo artigo!
Me tirou da escuridão total sobre o assunto.
Obrigado!