make install faz o que o autor Makefile quer que ele faça. Normalmente, a essa altura, é muito tarde para alterar o diretório de instalação, como é frequentemente conhecido anterior , durante a compilação, para que arquivos de ajuda e arquivos de configuração possam ser referenciados com nomes de caminho corretos.
Muitos projetos usam o GNU Autotools para tentar melhorar sua portabilidade entre as diferenças de hardware e sistemas operacionais. (Diferentes variantes do Unix usam cabeçalhos ligeiramente diferentes para declarações de funções que estão um pouco fora do caminho usual - exceto que a maioria dos programas precisa de um ou outro dos declarados em locais diferentes.)
Quando um projeto usa o Autotools, o mantra normal para instalá-lo é:
./configure
make
make install
O ./configure normalmente permite que você use uma opção de linha de comando como --prefix /opt/apache ou algo semelhante para especificar um nome de caminho diferente. /usr/local/ é um padrão comum prefix . É muito mais fácil para o software construído localmente residir em um único local e o software fornecido pela distribuição para residir nos "diretórios principais": /usr/ /bin/ e assim por diante. (Empacotadores são muito cuidadosos em nunca tocar arquivos em /usr/local/ - eles sabem que é exclusivamente para administradores de sistema.)
De qualquer forma, o ./configure --prefix /path/to/new/prefix definirá uma variável no Makefile que está disponível ao compilar o programa, modificando as páginas de manual para que elas apontem para os locais corretos dos arquivos, modificando os arquivos de configuração etc. Então, make criará o software especificamente para o local de instalação desejado e make install o instalará nesse local.
A maioria dos programas pode ser executada mesmo sem a etapa make install final - apenas ./program_name geralmente os inicia. Esta é definitivamente uma coisa por projeto - algumas, como postfix , qmail , etc., são compostas de muitas peças diferentes e dependem de que todas trabalhem juntas. Outros, como ls ou su , podem ser independentes o suficiente para executar bem a partir do diretório em que foram construídos. (Isso nem sempre é útil - mas às vezes muito útil.)
No entanto, nem todos os projetos usam os Autotools - eles são enormes , complicados e miseráveis para serem mantidos. Makefile s manuscritas são muito mais simples de escrever, e eu pessoalmente acho que apenas distribuir uma variável Makefile simples com variáveis de configuração disponíveis é muito mais fácil para desenvolvedores e usuários. (Embora o ./configure ; make ; make install mantra seja realmente fácil para os usuários quando ele funciona.)