Configure, make, make install
Ok, se você usa Unix, Linux ou mesmo MacOS X, deve ter executado essa sequência de comandos várias vezes. Mas, você sabe o que eles fazem? Se não sabe, aí vai uma explicação simplificada:
O utilitário make é, de forma geral, um automatizador de tarefas: ele possibilita que você crie scripts para tarefas comuns e os nomeie. Assim, quando precisar executar dada tarefa, pode executar apenas make <nome_da_tarefa>. Essas tarefas ficam no arquivo Makefile, que você deve ter visto várias vezes.
O make também possui algumas regras padrão. Se você der o comando make programa e a tarefa programa não existir, o make executará suas regras padrão. Uma delas é a compilação do arquivo fonte do programa: se programa.c é mais novo que programa.o, executa o “linkador” e compila para executável, caso contrário, apenas compila programa.o (usando aqui programas em linguagem C, comuns na plataforma).
Executar make, sem um nome de tarefa (chamada de “target”), executa a primeira tarefa no arquivo Makefile do diretório atual, que é onde elas ficam definidas. O comando make install executa a tarefa chamada install. Note que tratam-se de convenções: um desenvolvedor poderia chamar essa tarefa de setup, mas a grande maioria segue a convenção.
O comando configure faz o trabalho inicial: configura paths, detecta o shell utilizado, verifica as dependências etc. Esse comando é um script gerado automaticamente e, após ser executado, gera o Makefile com as configurações específicas do seu sistema. Isso poupa muito trabalho do desenvolvedor, dada a extensa variedade de dependências que podem existir no grande universo dos sistemas Unix-like.
Recapitulando:
- Você executa o script configure. Isso cria um Makefile com as configurações do seu ambiente;
- Em seguida, você executa make. Isso faz com que a primeira tarefa do arquivo seja executada. Geralmente isso significa “setar” algumas variáveis e compilar o programa.
- Finalmente, você executa make install. Isso executa a tarefa install e instala o programa em seu sistema.
Isso é o básico. Nem todos os programas se comportam da mesma maneira. Cada um define ações diferentes para seus scripts, mas todos com o objetivo de verificar dependências, configurar o ambiente, compilar e instalar o programa.
Achou alguma besteira no texto? Quer adicionar mais informação? Comente! A comunidade e eu agradecemos.
Fonte:
Problemas instalando o ImageMagick 6.3.9 no Linux?
Montando um novo ambiente de desenvolvimento (com Ubuntu 7.10), precisei instalar o RMagick 2.2.2 e o ImageMagick, do qual o primeiro depende. Tive alguns problemas e achei interessante registrar aqui para servir de referência caso alguém passe pelo mesmo.
Pelas buscas que fiz, algumas outras pessoas tiveram o mesmo problema a partir da versão 6.3.8 do ImageMagick em diversas distribuições Linux.
Para instalar, baixei o tarball do ImageMagick mais recente e segui os passos descritos em http://www.imagemagick.org/script/install-source.php#unix. Ao testar a instalação (digitando o comando display no terminal), recebi o seguinte erro:
error while loading shared libraries: libMagickCore.so.1: cannot open shared object file: No such file or
directory
O que acontece é que a instalação via make copia as bibliotecas utilizadas pelo ImageMagick para /usr/local/lib e, ao executar, o ImageMagick busca-as em /usr/lib. Provavelmente é um bug no script utilizado para compilar e instalar o ImageMagick. Para resolver o problema, fiz uma pequena “adaptação técnica”:
sudo cp /usr/local/lib/libMagick*.* /usr/lib
Desta forma, as bibliotecas ficarão no diretório em que o ImageMagick faz a busca. Não é a solução mais bonita do mundo, mas funcionou.
Se tiver alguma solução mais limpa, por favor, deixe um comentário.
Lançado Ubuntu 7.10 - codename “Gutsy Gibbon”
![]()
Foi liberada hoje a nova versão da distribuição Linux Ubuntu, na sua versão 7.10 (ou Gutsy Gibbon). Veja o press release.
Como de costume, você pode pedir um CD gratuitamente ou baixar a imagem no site oficial: http://www.ubuntu.com/.
Usuários da versão 7.04, ou Feisty Fawn, podem atualizar o sistema para a versão mais nova.
Veja algumas novidades da nova versão: