Saltar al contenido

diferencia entre `make clean` y `make distclean`

Es imprescindible comprender el código de forma correcta previamente a usarlo a tu proyecto si ttienes algo que aportar puedes compartirlo con nosotros.

Solución:

El parámetro utilizado después make solo depende de los desarrolladores que escribieron el Makefile. La documentación a la que hace referencia más adelante, Autotools, es solo una de las muchas formas de crear un Makefile.

El estándar típico es make clean eliminará todos los archivos intermedios, y make distclean hace que el árbol quede tal como estaba cuando no estaba tarado (o algo bastante parecido), incluida la eliminación de cualquier salida del script de configuración. Así es como funciona el kernel de Linux, por ejemplo.

En otras palabras, depende totalmente de los desarrolladores para cada una de esas bibliotecas, y es por eso que a veces su clean y otras veces es distclean. Por cierto, no necesitas correr clean/distclean – Supongo que te hacen ejecutarlo solo para ahorrar espacio en disco. make install por lo general, copia los archivos en el directorio de destino (nuevamente, depende de los desarrolladores); por lo general, lugares como /usr/lib o /usr/bin (también determinado por el script de configuración, si es un sistema de compilación de Autotools)

Estos matices son la razón principal por la que las personas usan sistemas de gestión de paquetes como paquetes RPM o Debian.

Según tengo entendido, es simplemente para proteger el espacio en disco. Después de compilar algún programa, tendrá una gran cantidad de archivos, por ejemplo, archivos de objetos que ya no son necesarios, porque están vinculados entre sí en los archivos binarios. Todo se puede recrear gastando nuevamente algo de tiempo de CPU.

Tome este ejemplo con la actual ffmpeg código:

  • después de clonar el git repo, la fuente toma 53 160 kB
  • después de ejecutar la configuración, son 53 632 kB
  • después de la compilación tenemos más de 10 veces el valor inicial: 673 668 kB
  • make clean reduce esto a 53 636 kB
  • y finalmente despues make distclean estamos casi al nivel justo después de la clonación: 53 188 kB

Por qué se usa el paso libvpx make clean en vez de make distclean

Al momento de escribir la guía, libvpx no tenía ninguna regla en su Makefile para el objetivo distcleanasi que clean en su lugar.

Por qué make (dist)clean se incluye después make install

make distclean/make clean se incluye después de cada make install simplemente como una medida de precaución para proporcionar una “borrón y cuenta nueva” para los usuarios que regresan, cambian las opciones de configuración y vuelven a compilar (lo que ocurrió con más frecuencia de lo esperado).

En una versión anterior de la guía de compilación, sin el preventivo make distcleanuno de estos usuarios en ocasiones encontraría resultados inesperados.

Y si make distclean/make clean da error?

Como esto:

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

o esto:

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

Ignoralo. Solo significa que probablemente corriste make distclean dos veces que es inofensivo.

Si para ti ha sido de ayuda este artículo, sería de mucha ayuda si lo compartes con otros seniors de este modo nos ayudas a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *