diferença entre `make clean` e` make distclean`


25

Eu instalei o ffmpeg a partir de fontes com ajuda nesta página. https://trac.ffmpeg.org/wiki/CentosCompilationGuide

Notei que a maior parte deste tutorial chama make distcleandepois make install. Mas apenas libvpx chama make cleanapós a instalação.

De acordo com este documento, http://www.gnu.org/software/automake/manual/automake.html#Clean make clean exclui todos os arquivos makecriados e make distcleantodos os arquivos ./configurecriados.

fazer limpo

Apague da árvore de compilação os arquivos criados por make all.

fazer distclean

Além disso, apague qualquer coisa ./configure criada.

Entendo que make distcleané necessário para a próxima instalação, mas não consegui entender por que make cleané chamado após a instalação.

O ffmpeg instalado funciona sem problemas. Então fiz essa pergunta porque só quero melhorar meu conhecimento sobre o Linux. Seria muito útil que alguém me desse uma explicação.


2
Make clean é chamado após a instalação para limpar. Não há necessidade de manter as versões compiladas no diretório em que você compilou, se você ainda possui a fonte (e, portanto, pode recriá-las) e o programa instalado.
Hennes 28/08

Respostas:


27

O parâmetro usado depois makedepende apenas do (s) desenvolvedor (es) que escreveram o Makefile. A documentação a que você se refere posteriormente, Autotools, é apenas uma das muitas maneiras de criar um Makefile.

O padrão típico é make cleanremover todos os arquivos intermediários e make distcleantornar a árvore do jeito que estava quando estava sem tar-tar (ou algo bem próximo), incluindo a remoção de qualquer saída de script de configuração. É assim que o kernel do Linux funciona, por exemplo.

Em outras palavras, é totalmente dependente dos desenvolvedores para cada uma dessas bibliotecas, e é por isso que às vezes é cleane outras vezes é distclean. A propósito, você não precisa executar clean/ distclean- Eu acho que eles o executam apenas para economizar espaço em disco. make installnormalmente copia os arquivos para o diretório de destino (novamente dependente dos desenvolvedores) - normalmente locais como /usr/libou /usr/bin(também determinados pelo script de configuração, se for um sistema de criação do Autotools)

Essas nuances são a principal razão pela qual as pessoas usam sistemas de gerenciamento de pacotes como pacotes RPM ou Debian.


Principal motivo pelo qual as pessoas usam pacotes binários? Que tal economizar tempo?
x-yuri

6

Para meu entendimento, é simplesmente para espaço em disco seguro. Depois de compilar algum programa, você terá muitos arquivos, por exemplo, arquivos de objetos que não são mais necessários, porque eles estão vinculados nos binários. Tudo pode ser recriado gastando novamente algum tempo de CPU.

Veja este exemplo com o ffmpegcódigo atual :

  • após a clonagem do gitrepositório, a fonte leva 53 160 kB
  • após a configuração, é 53 632 kB
  • após a compilação, temos mais de 10 vezes o valor inicial: 673 668 kB
  • make clean reduz para 53 636 kB
  • e finalmente depois make distcleanque estamos quase no nível logo após a clonagem: 53 188 kB

2

Por que a etapa libvpx usa em make cleanvez demake distclean

No momento em que este documento foi escrito, o libvpx não possuía nenhuma regra Makefilepara o destino distclean, então cleanera usado.

Por que make (dist)cleanestá incluído depoismake install

make distclean/ make cleané incluído após cada um make installsimplesmente como medida de precaução para fornecer uma "lista limpa" para os usuários que retornam, alteram as opções de configuração e recompilam (o que ocorreu com mais frequência do que o esperado).

Em uma versão anterior do guia de compilação, sem o preventivo make distclean, um desses usuários ocasionalmente encontrava resultados inesperados.

E se make distclean/ make cleander um erro?

Como isso:

Makefile:198: Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'.  Stop.

ou isto:

make: *** No rule to make target 'distclean'.  Stop.

Ignore isto. Significa apenas que você provavelmente executou make distcleanduas vezes, o que é inofensivo.


Vale ressaltar que o guia agora usa make distcleanpara libvpx.
Hashim 20/03
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.