¿Cómo hacer que OpenWrt Makefile compile más rápido?

Grabé que pasaron 50 minutos para una compilation inicial de la image del firmware de OpenWrt, suponiendo que todos los packages necesarios se hayan instalado a través de sudo apt-get install . Mi BuildRoot Root Dir es openwrt .

Posteriormente, descubrí que si cambio el nombre del directory que se encuentra arriba de la carpeta openwrt , con un pequeño cambio en un file, diga wifi.lua la siguiente marca (en la carpeta openwrt ) tardará 21 minutos en comstackrse correctamente.

Sin embargo, si no renombro el directory sobre la carpeta openwrt , con un cambio menor similar en el mismo file, la próxima vez que V = 99 tome solo 3 minutos para comstackrse exitosamente.

Cuando cambio el nombre del directory anterior y hago lo mismo que el anterior, la toma demora 21 minutos en comstackrse correctamente. Con make V = 99 , puedo ver que hubo muchos más pasos de compilation en comparación con el caso en el que no cambié el nombre del directory superior.

Veo que la compilation de Makefile es mucho más rápida si no cambio el nombre del directory superior.

Esto me lleva a la pregunta relacionada: en Linux, cambiar de nombre o mover un directory ¿cambia los times de los files en subdirectorys?

Sé que Makefile no vuelve a generar un objective si el time de modificación del objective es más reciente que todas sus dependencies.

También estaba leyendo sobre algunos problemas con el Makefile de GNU: http://www.conifersystems.com/whitepapers/gnu-make/

¿El OpenWrt Makefile, que se supone que es mucho más avanzado que el Makefile de Linux original, aborda algunos o todos estos problemas?

(Para hacer que Makefile compile más rápido, también tengo openwrt/dl como un enlace simbólico a una carpeta en mi directory de inicio, de modo que los packages de tarballs del espacio de usuario no necesiten ser descargados nuevamente).

No, no cambia las marcas de time de los files y directorys contenidos, solo en el directory en sí. Sin embargo, si el $(src_dir) contiene objectives o dependencies que usan routes absolutas o incluso solo $(src_dir) , b / c es un objective diferente / nuevo. Consulte la documentation de GNU make para convenciones y consejos sobre objectives y variables "estándar".

Sin embargo, Makefiles no comstack y no existe el Makefile de Linux original. Crear / mantener un entorno como BuildRoot es muy complejo y los mantenedores probablemente se concentren en hacer que se construya correctamente antes de manera eficiente. Si un parche simple, como agregar un enlace simbólico ayuda a acelerar el process, tal vez debería enviarlo como una sugerencia de mejora en sentido ascendente.

Puede ejecutar la opción make with the jobs, desde man make:

-j [trabajos], –jobs [= trabajos]
Especifica la cantidad de trabajos (commands) que se ejecutarán simultáneamente. Si hay más de una opción -j, la última es efectiva. Si la opción -j se da sin un argumento, make no limitará el número de trabajos que se pueden ejecutar simultáneamente.