gratis descargar compiler compilador c++ c++11 packaging software-distribution abi

c++ - descargar - gcc wikipedia



¿Es seguro empaquetar el software C++ 11 en las distribuciones actuales de Linux? (1)

Como mantenedor en una distribución de Linux, algunos de los paquetes que suelo mantener están empezando a usar las características de C ++ 11 en su base de código. Todos ellos dependen de bibliotecas diferentes empaquetadas por las distribuciones de Linux.

Los problemas con el ABI pueden aparecer cuando se mezcla el código C ++ 11 con C ++ 98 y AFAIK, la mayoría de las Distribuciones principales de Linux actuales no habilitan el indicador C ++ 11 de forma predeterminada al compilar el software para generar paquetes.

La pregunta es : ¿de qué manera las principales distribuciones de Linux manejan la entrada del código C ++ 11? ¿Existe una manera decente de verificar o evitar estos problemas con el ABI cuando se utilizan bibliotecas del sistema?

Gracias.


El problema no tiene nada que ver con C ++ 11 vs C ++ 98, excepto que C ++ 11 puede motivar cambios binarios. No hay nada especial en los cambios binarios motivados por C ++ 11. Son tan rotos o no como los cambios binarios regulares. Además, solo se cambian si el mantenedor de la biblioteca elige específicamente cambiar su interfaz binaria.

En otras palabras, esto no tiene nada que ver con la versión estándar y todo lo relacionado con la biblioteca, a menos que la biblioteca opte explícitamente por ofrecer dos interfaces binarias diferentes a las diferentes versiones estándar (que todavía es una opción de biblioteca). Excepto en este caso, usted está tan quebrantado en C ++ 98 como en C ++ 11. Itanium es compatible con versiones anteriores entre las versiones compatibles con C ++ 11 y las versiones compatibles con C ++ 98, por lo que las ABI del compilador no están dañadas.

Desde la memoria, a menos que esté utilizando 4.7.0, que se rompieron por diversión y luego se rompió, está bastante seguro con libstdc ++: están acumulando rupturas ABI para un futuro lanzamiento cuando pueden hacer una gran ruptura.

En otras palabras, si bien el período de transición a C ++ 11 puede introducir una motivación adicional para romper el ABI y, por lo tanto, un riesgo adicional, el uso de C ++ 11 en sí mismo no introduce ningún riesgo adicional.