make instalar create configurar como comando linux makefile

linux - instalar - makefile wikipedia



Compilando C++ en una máquina Linux remota-advertencia "clock skew detected" (12)

Estoy conectado al pequeño cluster Linux de mi universidad a través de PuTTY y WinSCP, transfiriendo archivos usando el último y compilándolos y ejecutándolos con el primero. Mi trabajo hasta ahora se ha realizado en los laboratorios de la universidad, pero hoy he estado haciendo un trabajo en casa que generó una advertencia interesante.

Cargué una carpeta completa de cosas y, al ejecutar el comando make , obtengo esta como la última línea de salida:

marca: advertencia: Reloj sesgado detectado. Tu construcción puede estar incompleta.

El binario resultante funciona correctamente y no parece haber ningún otro error inesperado en el proceso de compilación.

Parece que puedo desencadenar el error construyendo después de cargar algunos archivos nuevos / de reemplazo (edito todo localmente y luego cargo la nueva versión), así que me pregunto si es algo tan simple como los tiempos de modificación de archivos no coincidentes. ¿O algo más preocupante?

Entonces, ¿debería estar preocupado? ¿Cómo puedo arreglar / prevenir esto?


De acuerdo con el usuario m9dhatter en LinuxQuestions.org :

"make" utiliza la marca de tiempo del archivo para determinar si el archivo que intenta compilar es antiguo o nuevo. si su reloj está dañado, puede tener problemas para compilar.

Si intenta modificar los archivos en otra máquina con un tiempo de reloj adelantado unos minutos y los transfiere a su máquina y luego intenta compilar, puede emitir una advertencia que diga que el archivo fue modificado en el futuro. el reloj puede estar sesgado o algo por el estilo (realmente no puedo recordar). usted podría simplemente leer el archivo ofensivo y hacer esto:

#touch <nombre de archivo offending>


Ese mensaje suele ser una indicación de que algunos de sus archivos tienen tiempos de modificación posteriores a la hora actual del sistema. Como make decide qué archivos compilar al realizar una compilación incremental comprobando si los archivos de origen se han modificado más recientemente que su archivo de objeto, esta situación puede generar archivos innecesarios o, lo que es peor, los archivos necesarios no se compilarán.

Sin embargo, si está construyendo desde cero (sin hacer una compilación incremental), es probable que pueda ignorar esta advertencia sin consecuencias.


Esto me pasó a mí. Es porque ejecuté make -j 4 y algunos trabajos terminaron fuera de servicio. Esta advertencia debe esperarse cuando se utiliza la opción -j .


Esto también me sucedió al ejecutar make en un recurso compartido Samba SMB CIFS en un servidor. Una solución duradera consiste en instalar el daemon ntp tanto en el servidor como en el cliente. (Tenga en cuenta que este problema no se resuelve ejecutando ntpdate . Esto resolvería la diferencia de tiempo solo temporalmente, pero no en el futuro).

Para Ubuntu y sistemas derivados de Debian, simplemente escriba la siguiente línea en la línea de comando:

$ sudo apt-get install ntp

Además, todavía será necesario emitir el comando touch * una vez (y solo una vez) en el directorio afectado para corregir los tiempos de modificación del archivo de una vez.

$ touch *

Para obtener más información sobre las diferencias entre ntp y ntpdate , consulte:


He tenido esto en el pasado, debido a que los relojes están en las máquinas. Considere configurar NTP para que todas las máquinas tengan el mismo tiempo.


La solución es ejecutar un cliente NTP, simplemente ejecute el comando como se muestra a continuación

#ntpdate 172.16.12.100

172.16.12.100 es el servidor ntp


Las otras respuestas aquí hacen un buen trabajo explicando el problema, así que no lo repetiré aquí. Pero hay una solución que puede resolverlo que aún no está en la lista: simplemente ejecute make clean , luego vuelva a ejecutar make .

Al hacer que se eliminen los archivos ya compilados, se evitará que tenga archivos para comparar las marcas de tiempo y se resuelva la advertencia.


Normalmente esto ocurre cuando se construye en un directorio montado NFS, y los relojes en el cliente y el servidor NFS no están sincronizados.

La solución es ejecutar un cliente NTP tanto en el servidor NFS como en todos los clientes.


Por lo general, esto se debe simplemente a los tiempos de desajuste entre las máquinas del host y del cliente. Puede intentar sincronizar los tiempos en sus máquinas usando ntp .


Realice comprobaciones si el resultado de la compilación, p. Ej. Somefile.o, es anterior a la fuente, p. Ej. Somefile.c. La advertencia anterior significa que algo sobre las timestaps de los archivos es extraño. Probablemente los relojes del sistema del servidor de la Universidad difieran de su reloj y, por ejemplo, presione a la 1 pm un archivo con fecha de modificación 2 pm. Puede ver la hora en la consola escribiendo la fecha.


Reemplace la batería del reloj en su computadora. He visto este mensaje de error cuando la batería con apariencia de moneda en la placa base necesitaba ser reemplazada.