2012-01-05 14 views
9

Preciso que restrinja esta pregunta al desarrollo "nativo" para mi x86 (64 bits) de la caja de Linux. Sin arquitectura integrada o no x86.¿Qué cadenas de herramientas alternativas (de trabajo) existen para el desarrollo x86 C++ en Linux?

Como soy un usuario de C++ y tengo un renacimiento en C++, actualmente uso C++ para proyectos personales.

En este momento estoy usando la robusta y tradicional cadena de herramientas de linux/gcc/make.

Pero a través de blogs y lo que las preguntas, hace poco se dieron cuenta de las nuevas herramientas prometedoras:

  • '' clang '' como una alternativa para '' gcc '', mucho más rápido, dando mejores mensajes de error
  • '' oro '' como un sustituto de '' ld '', mucho más rápido

Esas herramientas son menos conocido y es fácil ni siquiera saber de ellos.

¿Hay otras herramientas menos conocidas que debo tener en cuenta? Por ejemplo, alternativa a gdb o similar? (También estoy usando cmake)

Estoy buscando la facilidad de desarrollo primero, luego la mejora en la velocidad de desarrollo. Cualquier otra mejora es bienvenida.

Herramientas gratis si es posible.

+1

Hay compilador ICC de Intel, que viene con un depurador y otras herramientas. Es gratis para uso no comercial en Linux, de lo contrario, cuesta. –

+0

@PaulR Gracias Paul. Por supuesto, estoy más interesado en herramientas gratuitas, y una que mejora notablemente sobre las anteriores. (Intel afirma agregar velocidad de ejecución, pero eso es todo lo que pienso) – Offirmo

+0

Como dije en mi comentario, ICC * es * gratis para uso no comercial en Linux. Además de la generación de código de buena calidad, por lo general es el primer compilador que admite nuevas características de CPU (por razones obvias), p. última SSE, AVX, etc. –

Respuesta

5

Usted podría estar interesado por ccache (una caché compilador capaz de evitar la recompilación inútil, y de forma transparente utilizable a través del mismo comando g++, simplemente añadiendo un enlace simbólico dentro de su $PATH)

Para C (pero no en C++) de programación , es posible que le interese tinycc, que se compila muy rápido (pero produce código binario que se ejecuta lentamente).

Al codificar, se puede usar Boehm's garbage collector. Ver this question relacionado con su uso en C++.

Y también use valgrind para depurar las fugas de memoria.

A veces, la carga dinámica de un objeto compartido con dlopen es intersting. Los símbolos dlsym -ed deben ser extern "C" en C++. A veces me encanta generar código C o C++ sobre la marcha, compilándolo, y dlopen -ing el módulo.

Para construir, considere investigar a otros constructores, como p. Ej. omake.

Al compilar, no olvide la bandera -Wall (y tal vez -Wextra) para el compilador.La nueva optimización de tiempo de enlace (con CXX=g++ -flto en su Makefile) podría ser interesante (pero el tiempo de compilación sufre, tal vez un aumento del 10% en la velocidad del ejecutable).

Si sus archivos de código fuente comparten el mismo encabezado C++, vale la pena precompilar ese encabezado.

reciente (por ejemplo, mejor que C++) existen lenguas, como Ocaml y Haskell, sino también Ir y D.

utilizar un sistema de control de versiones como GIT incluso para proyectos favoritos.

Qt es un buen marco de C++, especialmente por su conjunto de herramientas gráficas.

Wt le permite codificar en C++ interfaces web bastante rápidamente.

Ambos GCC & GDB todavía están evolucionando. No olvide utilizar las últimas versiones (por ejemplo, 4.6 para GCC, 7.3 para GDB) que proporcionan mejoras importantes sobre las anteriores.

Considere extender o personalizar su compilador GCC para sus necesidades particulares a través de complementos o mejor aún usando extensiones MELT.

+0

OK muchas respuestas aquí (no iría tan lejos como cambiar el idioma, vamos a mantener esta pregunta en el buen camino). tinycc es solo C, lástima. Estoy interesado en el recolector de basura, echando un vistazo. – Offirmo

+0

@Basile Starynkevitch - +1 por mencionar -Wall, necesario para todas las construcciones. –

+0

Nunca escuché hablar de MELT, se ve muy interesante, ¡gracias! – Offirmo

4

Conozco dos alternativas:

Ambos pueden reemplazar maquillaje, porque son más rápidos para grandes proyectos, ya que no lo hacen extensas comprobaciones.

+0

+1 Muy interesante, gracias. "Make vs Tup" parece prometedor. ¿Lo usas tú mismo? Ahora lo que necesitamos es un generador de tup para cmake. Veo que hay algunos esfuerzos en esta dirección. – Offirmo

+0

@Offirmo Mi colega está trabajando para cambiar de make a tup, y mencionó una mejora del 30%. –

1

Para reemplazar la parte de la herramienta, recomiendo waf que es rápido y tiene una huella pequeña. El soporte es bastante bueno también.

He probado oro, que no era más rápido que ld, pero parece ser prometedor. Sin embargo, parece que no está realmente bien guardado, la última vez que lo revisé.

clang parece bastante prometedor, pero no lo he intentado en un proyecto de producción. Lo pienso, ya que su diseño bien pensado conduce a un desarrollo realmente rápido. Tengo la intención de usarlo para cambiar a C++ 11 ^^

MY2C

+1

El oro se mantiene, pero ahora es bastante maduro en la práctica. Google tiene un interés activo en el oro. –

+1

Actualmente, GCC 4.6 parece tener un soporte C++ 11 ligeramente mejor que clang 3.0 –

+0

Actualmente estoy usando LLVM GCC (básicamente clang) en OSX en este momento y lo encuentro muy rápido para la compilación y el desarrollo general. En XCode, clang crea constantemente las tablas de símbolos en el fondo, lo que hace que la finalización del código sea receptiva y contextual, y como se mencionó anteriormente, reduce el tiempo de compilación/compilación. –

Cuestiones relacionadas