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 distclean
depois make install
. Mas apenas libvpx chama make clean
apó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 make
criados e make distclean
todos os arquivos ./configure
criados.
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.
Respostas:
O parâmetro usado depois
make
depende apenas do (s) desenvolvedor (es) que escreveram oMakefile
. A documentação a que você se refere posteriormente, Autotools, é apenas uma das muitas maneiras de criar umMakefile
.O padrão típico é
make clean
remover todos os arquivos intermediários emake distclean
tornar 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 é
clean
e outras vezes édistclean
. A propósito, você não precisa executarclean
/distclean
- Eu acho que eles o executam apenas para economizar espaço em disco.make install
normalmente copia os arquivos para o diretório de destino (novamente dependente dos desenvolvedores) - normalmente locais como/usr/lib
ou/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.
fonte
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
ffmpeg
código atual :git
repositório, a fonte leva 53 160 kBmake clean
reduz para 53 636 kBmake distclean
que estamos quase no nível logo após a clonagem: 53 188 kBfonte
Por que a etapa libvpx usa em
make clean
vez demake distclean
No momento em que este documento foi escrito, o libvpx não possuía nenhuma regra
Makefile
para o destinodistclean
, entãoclean
era usado.Por que
make (dist)clean
está incluído depoismake install
make distclean
/make clean
é incluído após cada ummake install
simplesmente 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 clean
der um erro?Como isso:
ou isto:
Ignore isto. Significa apenas que você provavelmente executou
make distclean
duas vezes, o que é inofensivo.fonte
make distclean
para libvpx.