linux ubuntu gcc g++ mesos

linux - make-j 8 g++: error interno del compilador: Killed(programa cc1plus)



ubuntu gcc (4)

Esta fue la pista en mi escenario (compilación de mesos en CentOS 7) en una instancia de AWS EC2.

Lo arreglé aumentando la memoria y la CPU al menos a 4GiB y 2 vCPU.

Cuando implemento Apache Mesos en Ubuntu12.04, sigo el documento oficial, en el paso "make -j 8" me aparece este error en la consola:

g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.9/README.Bugs> for instructions. make[2]: *** [slave/containerizer/mesos/libmesos_no_3rdparty_la-containerizer.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... mv -f log/.deps/liblog_la-log.Tpo log/.deps/liblog_la-log.Plo mv -f slave/containerizer/.deps/libmesos_no_3rdparty_la-docker.Tpo slave/containerizer/.deps/libmesos_no_3rdparty_la-docker.Plo mv -f log/.deps/liblog_la-consensus.Tpo log/.deps/liblog_la-consensus.Plo mv -f slave/containerizer/.deps/libmesos_no_3rdparty_la-external_containerizer.Tpo slave/containerizer/.deps/libmesos_no_3rdparty_la-external_containerizer.Plo mv -f log/.deps/liblog_la-coordinator.Tpo log/.deps/liblog_la-coordinator.Plo mv -f slave/.deps/libmesos_no_3rdparty_la-slave.Tpo slave/.deps/libmesos_no_3rdparty_la-slave.Plo mv -f master/.deps/libmesos_no_3rdparty_la-master.Tpo master/.deps/libmesos_no_3rdparty_la-master.Plo make[2]: Leaving directory `/root/Mesos/mesos/build/src'' make[1]: *** [all] Error 2 make[1]: Leaving directory `/root/Mesos/mesos/build/src'' make: *** [all-recursive] Error 1

¿Qué tengo que hacer?


Intenta ejecutar (justo después de la falla) dmesg.

¿Ves una línea como esta?

Out of memory: Kill process 23747 (cc1plus) score 15 or sacrifice child Killed process 23747, UID 2243, (cc1plus) total-vm:214456kB, anon-rss:178936kB, file-rss:5908kB

Lo más probable es que ese sea tu problema. Ejecutar make -j 8 ejecuta muchos procesos que utilizan más memoria. El problema anterior ocurre cuando su sistema se queda sin memoria. En este caso, en lugar de que todo el sistema se caiga, los sistemas operativos ejecutan un proceso para calificar cada proceso en el sistema. El que puntúa más alto es asesinado por el sistema operativo para liberar memoria. Si el proceso que se destruye es cc1plus, gcc (quizás de manera incorrecta) interpreta esto como un fallo del proceso y, por lo tanto, supone que debe ser un error del compilador. Pero no es realmente, el problema es que el sistema operativo mató a cc1plus, en lugar de que se bloqueó.

Si este es el caso, te estás quedando sin memoria. Así que ejecute quizás make -j 4 en su lugar. Esto significará menos trabajos paralelos y significará que la compilación tomará más tiempo pero con suerte no agotará la memoria del sistema.


compruebe si su instalación de CentOS ya tiene habilitado el intercambio escribiendo:

sudo swapon --show

Si la salida está vacía, significa que su sistema no tiene espacio de intercambio habilitado.

Crear un archivo de intercambio

1.crear un archivo que se utilizará como un espacio de intercambio. conteo significa 1024M * 1024 = 1G

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

2. Asegúrese de que solo el usuario root pueda leer y escribir el archivo de intercambio:

sudo chmod 600 /swapfile

3. configurar un área de intercambio de Linux en el archivo

sudo mkswap /swapfile

4.activar el swap

sudo swapon /swapfile

5. "sudo swapon --show" o "sudo free -h" verá el espacio de intercambio.


(Podría ser un problema de memoria)

Para cualquier persona que todavía esté luchando con esto (más de 2 años después de que se hizo la pregunta), hay un truco en CryptoCurrencyTalk que parece hacer que funcione.

Por conveniencia lo estoy pegando aquí:

Corre estos

  • sudo dd if=/dev/zero of=/swapfile bs=64M count=16
  • sudo mkswap /swapfile
  • sudo swapon /swapfile

Eso debería permitirte compilar tu código. Pero asegúrese de revertir el swapon después de la compilación, con estos:

  • sudo swapoff /swapfile
  • sudo rm /swapfile