Este es el comando ccache-swig2.0 que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
ccache-swig: un caché de compilador rápido
SINOPSIS
ccache-swig [OPCIÓN]
caché-trago [OPCIONES DE COMPILADOR]
[OPCIONES DE COMPILADOR]
DESCRIPCIÓN
ccache-swig es un caché de compilador. Acelera la recompilación de código C / C ++ / SWIG mediante el almacenamiento en caché
compilaciones anteriores y detectar cuándo se vuelve a realizar la misma compilación. ccache-swig es
ccache más soporte para SWIG. ccache y ccache-swig se usan indistintamente en este
documento.
OPCIONES RESUMEN
Aquí hay un resumen de las opciones para ccache-swig.
-s muestran resumen de estadísticas
-z cero estadísticas
-c ejecutar una limpieza de caché
-C borra la caché por completo
-F establecer el máximo de archivos en la caché
-METRO establecer el tamaño máximo de caché (use G, M o K)
-h esta página de ayuda
-V número de versión impresa
OPCIONES
Estas opciones solo se aplican cuando invoca ccache como "ccache-swig". Cuando se invoca como
compilador no se aplica ninguna de estas opciones. En ese caso, se aplican las opciones normales del compilador y
debe consultar la documentación de sus compiladores.
-h Imprimir una página de resumen de opciones
-s Imprima el resumen de estadísticas actuales para la caché. Las estadísticas se almacenan
repartidos por los subdirectorios de la caché. El uso de "ccache-swig -s" suma el
estadísticas en todos los subdirectorios e imprime los totales.
-z Ponga a cero las estadísticas de la caché.
-V Imprime el número de versión de ccache
-c Limpie la caché y vuelva a calcular el recuento de archivos de caché y los totales de tamaño. Normalmente el
La opción -c no debería ser necesaria ya que ccache mantiene el caché por debajo del especificado
limita en tiempo de ejecución y mantiene las estadísticas actualizadas en cada compilación. Esta opcion es
sobre todo útil si modifica manualmente el contenido de la caché o cree que la caché
las estadísticas de tamaño pueden ser inexactas.
-C Borre todo el caché, eliminando todos los archivos almacenados en caché.
-F
Esto establece el número máximo de archivos permitidos en la caché. El valor se almacena
dentro del directorio de caché y se aplica a todas las compilaciones futuras. Debido a la forma en que
El valor se almacena el valor real utilizado siempre se redondea al más cercano.
múltiplo de 16.
-M
Esto establece el tamaño máximo de caché. Puede especificar un valor en gigabytes, megabytes
o kilobytes agregando una G, M o K al valor. El valor predeterminado es gigabytes. los
el valor real almacenado se redondea al múltiplo más cercano de 16 kilobytes.
INSTALACIÓN
Hay dos formas de utilizar ccache. Puede prefijar sus comandos de compilación con
"ccache-swig" o puede crear un vínculo simbólico entre ccache-swig y los nombres de su
compiladores. El primer método es más conveniente si solo desea probar ccache o desea
para usarlo para algunos proyectos específicos. El segundo método es más útil para cuando lo desee
para usar ccache para todas sus compilaciones.
Para instalar y usar con el primer método, simplemente copie ccache-swig en algún lugar de su ruta.
Para instalar el segundo método, haga algo como esto:
cp ccache-trago / usr / local / bin /
ln -s / usr / local / bin / ccache-swig / usr / local / bin / gcc
ln -s / usr / local / bin / ccache-swig / usr / local / bin / g ++
ln -s / usr / local / bin / ccache-swig / usr / local / bin / cc
ln -s / usr / local / bin / ccache-swig / usr / local / bin / swig
Esto funcionará siempre que / usr / local / bin viene antes de la ruta a gcc (que suele estar en
/ usr / bin). Después de la instalación, es posible que desee ejecutar "which gcc" para asegurarse de que el
se está utilizando el enlace.
¡Nota! No utilice un enlace físico, utilice un enlace simbólico. Un enlace fijo provocará "interesante"
auténticos.
EXTRA OPCIONES
Cuando se ejecuta como un compilador, ccache generalmente solo toma las mismas opciones de línea de comando
como el compilador que está utilizando. La única excepción a esto es la opción '--ccache-skip'.
Esa opción se puede usar para decirle a ccache que la siguiente opción definitivamente no es una entrada
filename, y debe pasarse al compilador tal cual.
La razón por la que esto puede ser importante es que ccache necesita analizar la línea de comando y
determinar qué es un nombre de archivo de entrada y qué es una opción del compilador, ya que necesita la entrada
filename para determinar el nombre del archivo objeto resultante (entre otras cosas). los
ccache heurístico utiliza en este análisis es que cualquier cadena en la línea de comando que existe como
un archivo se trata como un nombre de archivo de entrada (generalmente un archivo C). Al usar --ccache-skip puede
forzar una opción para que no se trate como un nombre de archivo de entrada y, en su lugar, se pase a la
compilador como una opción de línea de comando.
MEDIO AMBIENTE VARIABLES
ccache usa una serie de variables de entorno para controlar la operación. En la mayoría de los casos
no necesitará ninguno de estos, ya que los valores predeterminados estarán bien.
CCACHE_DIR
la variable de entorno CCACHE_DIR especifica dónde ccache mantendrá su caché
salida del compilador. El valor predeterminado es "$ HOME / .ccache".
CCACHE_TEMPDIR
la variable de entorno CCACHE_TEMPDIR especifica dónde ccache pondrá temporal
archivos. El valor predeterminado es el mismo que CCACHE_DIR. Tenga en cuenta que la ruta CCACHE_TEMPDIR
debe estar en el mismo sistema de archivos que la ruta CCACHE_DIR, de modo que el cambio de nombre de los archivos
entre los dos directorios puede funcionar.
CCACHE_LOGFILE
Si configura la variable de entorno CCACHE_LOGFILE, ccache escribirá algún registro
información sobre aciertos y errores de caché en ese archivo. Esto es útil para rastrear
auténticos.
CCACHE_VERBOSE
Si configura la variable de entorno CCACHE_VERBOSE, ccache se mostrará en
stdout todas las invocaciones del compilador que realiza. Esto puede ser útil para depurar
problemas inesperados.
CCACHE_PATH
Opcionalmente, puede establecer CCACHE_PATH en una ruta separada por dos puntos donde ccache se verá
para los compiladores reales. Si no hace esto, ccache buscará la primera
ejecutable que coincide con el nombre del compilador en la RUTA normal que no es un enlace simbólico
para ccachérsela.
CCACHE_CC
Opcionalmente, puede configurar CCACHE_CC para forzar el uso del nombre del compilador. Si tu
no hagas esto, entonces ccache lo resuelve desde la línea de comando.
CCACHE_PREFIX
Esta opción agrega un prefijo a la línea de comando que ejecuta ccache al invocar el
compilador. Consulte también la siguiente sección sobre el uso de ccache con distcc.
CCACHE_DISABLE
Si configura la variable de entorno CCACHE_DISABLE, ccache simplemente llamará al
compilador real, omitiendo el caché por completo.
CCACHE_READONLY
la variable de entorno CCACHE_READONLY le dice a ccache que intente usar el existente
archivos de objeto almacenados en caché, pero no para intentar agregar nada nuevo a la caché. Si usted es
usando esto porque su CCACHE_DIR es de solo lectura, entonces puede encontrar que también
necesita establecer CCACHE_TEMPDIR ya que, de lo contrario, ccache no podrá crear el temporal
archivos.
CCACHE_CPP2
Si configura la variable de entorno CCACHE_CPP2, ccache no usará la
optimización de evitar la segunda llamada al preprocesador compilando el
salida preprocesada que se utilizó para encontrar el hash en el caso de una caché
pierda. Esta es principalmente una opción de depuración, aunque es posible que algunos
Los compiladores inusuales tendrán problemas con las extensiones de nombre de archivo intermedias utilizadas
en esta optimización, en cuyo caso esta opción podría permitir el uso de ccache.
CCACHE_NOCOMPRESS
Si establece la variable de entorno CCACHE_NOCOMPRESS, no hay compresión
utilizado en archivos que van a la caché. Sin embargo, esta configuración no tiene ningún efecto sobre cómo
Los archivos se recuperan de la caché, los resultados comprimidos seguirán siendo utilizables.
CCACHE_NOSTATS
Si configura la variable de entorno CCACHE_NOSTATS, ccache no actualizará la
archivos de estadísticas en cada compilación.
CCACHE_NLEVELS
La variable de entorno CCACHE_NLEVELS le permite elegir el número de niveles
de hash en el directorio de caché. El valor predeterminado es 2. El mínimo es 1 y el máximo
es 8.
CCACHE_HARDLINK
Si configura la variable de entorno CCACHE_HARDLINK, ccache intentará usar
enlaces duros desde el directorio de caché al crear la salida del compilador en lugar de
utilizando una copia de archivo. El uso de enlaces físicos es más rápido, pero puede confundir a programas como 'make'
que se basan en tiempos de modificación. Los enlaces duros nunca están hechos para caché comprimido
archivos.
CCACHE_RECACHE
Esto obliga a ccache a no utilizar ningún resultado almacenado en caché, incluso si los encuentra. Nuevo
los resultados aún se almacenan en caché, pero las entradas de caché existentes se ignoran.
CCACHE_UMASK
Esto establece la umask para ccache y todos los procesos secundarios (como el compilador). Esta
es sobre todo útil cuando desea compartir su caché con otros usuarios. Tenga en cuenta que esto
también afecta los permisos de archivo establecidos en los archivos de objeto creados a partir de su
compilaciones.
CCACHE_HASHDIR
Esto le dice a ccache que haga un hash del directorio de trabajo actual al calcular el hash
que se utiliza para distinguir dos compilaciones. Esto evita un problema con el almacenamiento.
del directorio de trabajo actual en la información de depuración de un archivo de objeto, que puede conducir
ccache para dar un archivo de objeto en caché que tiene el directorio de trabajo en la depuración
información configurada incorrectamente. Esta opción está desactivada de forma predeterminada porque la configuración incorrecta de
esta información de depuración rara vez causa problemas. Si tiene problemas con gdb que no usa
el directorio correcto y luego habilite esta opción.
CCACHE_UNIFY
Si configura la variable de entorno CCACHE_UNIFY, entonces ccache usará C / C ++
unificador al hacer hash en la salida del preprocesador si -g no se usa en la compilación. los
unificador es más lento que un hash normal, por lo que la configuración de esta variable de entorno pierde un
un poco de velocidad, pero significa que ccache puede aprovechar no recompilar
cuando los cambios en el código fuente consisten en reformatear solamente. Tenga en cuenta que el uso
CCACHE_UNIFY cambia el hash, por lo que las compilaciones en caché con el conjunto CCACHE_UNIFY no se pueden
se utiliza cuando CCACHE_UNIFY no está configurado y viceversa. La razón por la que el unificador está fuera por
el valor predeterminado es que puede proporcionar información incorrecta sobre el número de línea en la advertencia del compilador
mensajes.
CCACHE_EXTENSIÓN
Normalmente, ccache intenta determinar automáticamente la extensión que se utilizará para
archivos intermedios de preprocesador C basados en el tipo de archivo que se está compilando.
Desafortunadamente, esto a veces no funciona, por ejemplo, cuando se usa el compilador aCC
en HP-UX. En sistemas como este, puede usar la opción CCACHE_EXTENSION para anular
el valor por defecto. En HP-UX, establezca esta variable de entorno en "i" si utiliza el aCC
compilador
CCACHE_STRIPC
Si establece la variable de entorno CCACHE_STRIPC, ccache eliminará el -c
opción al invocar el preprocesador. Esta opción es principalmente para el sol.
Compilador Workshop C ++ ya que sin esta opción se muestra una advertencia injustificada:
CC: Advertencia: "-E" redefine el producto de "objeto" a "fuente (salida estándar)" cuando -E y
-c se usa junto.
CCACHE_SWIG
Cuando se usa SWIG como compilador y no tiene 'swig' en el nombre del ejecutable,
entonces la variable de entorno CCACHE_SWIG debe configurarse para que ccache
trabajar correctamente con SWIG. El uso de CCACHE_CPP2 también se recomienda para SWIG debido
a algunas peculiaridades del preprocesador, sin embargo, el uso de CCACHE_CPP2 a menudo se puede omitir -
verifique su código generado con y sin esta opción establecida. Los problemas conocidos son
usando directivas de preprocesador dentro de% bloques en línea y el uso de '#pragma SWIG'.
CACHE TAMAÑO ADMINISTRACIÓN
Por defecto, ccache tiene un límite de un gigabyte en el tamaño de la caché y no hay un número máximo de
archivos. Puede establecer un límite diferente mediante las opciones "ccache -M" y "ccache -F", que
establecer el tamaño y el número de límites de archivos.
Cuando se alcanzan estos límites, ccache reducirá la caché a un 20% por debajo de los números que
especificado para evitar realizar la operación de limpieza de caché con demasiada frecuencia.
CACHE COMPRESIÓN
De forma predeterminada en la mayoría de las plataformas, ccache comprimirá todos los archivos que coloca en la caché usando
la compresión zlib. Si bien esto implica una desaceleración del rendimiento insignificante,
aumenta significativamente la cantidad de archivos que caben en la caché. Puedes apagar
compresión configurando la variable de entorno CCACHE_NOCOMPRESS.
BLOGS IT OBRAS
La idea básica es detectar cuándo está compilando exactamente el mismo código por segunda vez y
utilice la salida compilada previamente. Detectas que es el mismo código formando un hash
de:
o la salida del preprocesador de ejecutar el compilador con -E
o las opciones de la línea de comando
o el tamaño real de los compiladores y el tiempo de modificación
o cualquier salida stderr generada por el compilador
Estos se hash utilizando md4 (un hash fuerte) y se forma un archivo de caché en función de ese hash
resultado. Cuando se realiza la misma compilación por segunda vez, ccache puede suministrar el
salida correcta del compilador (incluidas todas las advertencias, etc.) de la caché.
ccache se ha escrito cuidadosamente para producir siempre exactamente la misma salida del compilador que
obtendría sin el caché. Si alguna vez descubre un caso en el que ccache cambia el
salida de su compilador, hágamelo saber.
USO CCACHÉ HE TRABAJADO DISTCC
distcc es un programa muy útil para distribuir la compilación en una variedad de compiladores
servidores. A menudo es útil combinar distcc con ccache, de modo que las compilaciones que se realizan
distcc acelera, pero ccache evita la compilación por completo siempre que sea posible.
Para usar distcc con ccache, recomiendo usar la opción CCACHE_PREFIX. Solo necesitas configurar
la variable de entorno CCACHE_PREFIX a 'distcc' y ccache antepondrá la línea de comando
usado con el compilador con el comando 'distcc'.
COMPARTIR A CACHE
Un grupo de desarrolladores puede aumentar la tasa de aciertos de la caché compartiendo un directorio de caché. los
Sin embargo, los enlaces duros causan efectos secundarios no deseados, ya que todos los enlaces a un archivo en caché comparten la
marca de tiempo de modificación del archivo. Esto da como resultado que las dependencias falsas sean activadas por
sistemas de compilación basados en marcas de tiempo cada vez que otro usuario se vincula a un archivo existente. Típicamente,
los usuarios verán que sus bibliotecas y binarios se vuelven a vincular sin motivo. Para compartir un
caché sin efectos secundarios, se deben cumplir las siguientes condiciones:
o Utilice el mismo CCACHE_DIR configuración de variable de entorno
o Desarmar el CCACHE_HARDLINK Variable ambiental
o Asegúrese de que todos establezcan la variable de entorno CCACHE_UMASK en 002, esto asegura
que todos los miembros del grupo pueden acceder a los archivos almacenados en caché.
o Asegúrese de que todos los usuarios tengan permiso de escritura en todo el directorio de caché (y
que confía en todos los usuarios de la caché compartida).
o Asegúrese de que el bit setgid esté configurado en todos los directorios de la caché. Esto dice
el sistema de archivos para heredar la propiedad del grupo para los nuevos directorios. El comando "chmod
g + s `find $ CCACHE_DIR -type d`" podría ser útil para esto.
o Establecer CCACHE_NOCOMPRESS para todos los usuarios, si hay usuarios con versiones de ccache
que no admiten compresión.
HISTORIA
ccache se inspiró en el script de shell compilercache escrito por Erik Thiele y yo
quisiera agradecerle por un excelente trabajo. Ver
http://www.erikyyy.de/compilercache/ para los guiones de Erik. ccache-swig es un puerto del
ccache original con soporte agregado para usar con SWIG.
Escribí ccache porque quería obtener un poco más de velocidad de la caché del compilador y
quería eliminar algunas de las limitaciones de la versión del script de shell.
DIFERENCIAS DESDE COMPILERCACHÉ
Las mayores diferencias entre el script compilercache de Erik y ccache son:
o ccache está escrito en C, lo que lo hace un poco más rápido (llamando a
programas es principalmente lo que ralentizó los scripts).
o ccache puede encontrar automáticamente el compilador real
o ccache mantiene estadísticas sobre aciertos / errores
o ccache puede realizar una gestión automática de la caché
o ccache puede almacenar en caché la salida del compilador que incluye advertencias. En muchos casos esto da
ccache una tasa de aciertos de caché mucho mayor.
o ccache puede manejar un rango mucho más amplio de opciones del compilador
o ccache evita una doble llamada a cpp en una falta de caché
CRÉDITOS
Gracias a las siguientes personas por sus contribuciones a ccache
o Erik Thiele para el script de compilercache original
o Luciano Rocha por la idea de compilar la salida del preprocesador para evitar un segundo cpp
pass
o Paul Russell por muchas sugerencias y el empaquetado de Debian
Use ccache-swig2.0 en línea usando los servicios de onworks.net