2008-08-19 17 views
50

Desarrollo aplicaciones C++ en un entorno Linux. Las herramientas que uso todos los días incluyen Eclipse con el complemento CDT, gdb y valgrind.
¿Qué herramientas usan otras personas? ¿Hay algo para Linux que compita con la astucia de Microsoft Visual Studio?¿Qué herramientas usas para desarrollar aplicaciones C++ en Linux?

+0

¿Puedes explicar a qué te refieres con * slickness *? ¿Quieres potencia y versatilidad? Velocidad y eficiencia ¿O está más interesado en los botones y menús de la interfaz gráfica de usuario de peso pesado guiados por mi mano detrás de mi trasero? (No es que * I * alguna vez culparía a un IDE por limitarme a hacer cosas que sé que son seguras.) – NVRAM

+20

Lástima que sea un desarrollador puro de UNIX, pero debo confesar que Microsoft Visual Studio es uno de los mejores IDE disponibles para el desarrollo de C++. –

+0

@Clayton: este tipo de pregunta podría ser problemática.¿Cómo va a decidir qué respuesta aceptar, p. cuál es "correcto"? –

Respuesta

5

g ++ y hacer

+2

Y usted hace su edición con 'gato', supongo? – Arafangion

+7

No, uso una conexión de escritorio remota a mi computadora con Windows y uso eclipse para escribir código, luego lo copio y lo pego en g ++ – andrewrk

+7

Espero que esté bromeando o_O –

7

Creo KDevelop es lo que sería el más cercano de Microsoft Visual Studio. Consigues casi todo (excepto desafortunadamente el depurador VS que de hecho es un asesino). Ya es maduro y su desarrollo es bastante rápido y prometedor.

En realidad implementa algunas cosas que ni siquiera verá en VS. Por ejemplo, abra el archivo de encabezado y el archivo cpp en el modo de mosaico vertical, y tenga el cursor sincronizado en ambos, , es decir: cuando selecciona un prototipo de funciones, siempre tiene su implementación a la derecha.

KDevelop es un proyecto de KDE, pero se ejecuta en Gnome. Anjuta es un proyecto equivalente en Gnome, pero me parece inutilizable para el trabajo real. Para el resto de la pila, gcc crea valgrind ddd (un gdb IDE) y python para escribir mi código.

Si está bien para probar un enfoque diferente que el VS IDE. Puede considerar probar vim. Sin embargo, lleva mucho tiempo acostumbrarse.

+2

QT tiene un nuevo IDE, que parece ser un competidor de Visual Studio. – gbjbaanb

22

g ++ por supuesto, pero también Code::Blocks que es una plataforma cruzada absolutamente fantástica IDE (Win32, * nix, Mac).

Utilizo las compilaciones nocturnas (más parecidas a las últimas semanas) del SVN. Tiene casi todas las características que esperarías de un IDE moderno. Es realmente un proyecto Open Source verdaderamente fantástico.

Además, en Linux tiene la alegría de usar Valgrind que es probablemente la mejor herramienta de seguimiento de memoria (también hace otras cosas) que el dinero puede comprar. Y es gratis :) Rastrea fugas de memoria y más con facilidad.

¡Y hay tanto más! Linux es una gran plataforma de desarrollo :)

(corregir) Acabo de dar cuenta de que mencionó a Valgrind en su pregunta, me hace el tonto por leerlo demasiado rápido.

+2

Intenté Code :: Blocks, pero no vi nada grandioso al respecto, ciertamente no comparado con Eclipse. ¿Puedes ampliar lo que te gusta de él? –

+4

Creo que Eclipse es demasiado pesado. Me encanta poder compilar un archivo fuente sin tener que estar en un proyecto. Me gusta que los archivos del proyecto sean livianos y poco intrusivos, a diferencia de Eclipse, donde son dictadores draconianos. Me gusta el control de origen de Eclipse, pero C :: B está obteniendo eso :) – Adam

0

Anjuta es una buena idea que hace que Linux C++ dev también sea bastante agradable.

+2

anjuta no funciona muy bien. – andrewrk

6

Eclipse CDT es realmente bastante agradable. Todavía tengo que recurrir a Emacs de vez en cuando, pero me encanta la indexación, los árboles de llamadas, el soporte de refactorización (pensé que no se parecía en nada a la refactorización de Java), etc. El resaltado de sintaxis es bastante poderoso si lo personalizas (puede tener colores para variables locales, argumentos de funciones, métodos, etc.). La finalización del código también es muy útil. He usado principalmente Eclipse 3.3 pero 3.4 también es genial.

Además, la mayoría de las veces estoy usando esto para un proyecto algo grande (~ 1e6 sloc) - puede ser excesivo para proyectos de juguetes.

+0

PD. Eclipse 3.4 y CDT 5.0.2+ son realmente sólidos. Es un paraíso para una gran base de código (mi proyecto principal está en millones de líneas de código). –

+0

Uso CDT también. Hay un complemento de generador de SCons para Eclipse http://nic-nac-project.org/~lothar/eclipse/update/SConsBuilderPlugin.html – lothar

4

Cuando desarrollé el código C++ en Linux, utilicé emacs como editor y como front-end gdb. Más tarde, mi compañía compró SlickEdit para todos los programadores, lo cual es un buen IDE, tal vez no a la par con Visual Studio. Usamos gdb extensivamente, con el uso ocasional de valgrind y gprof. Recomiendo usar un lenguaje de scripting para complementar C++ en las tareas diarias. Pasé de PERL a python al rubí actual.Todos hacen el trabajo y tienen fortalezas donde C++ tiene debilidades. Y, por supuesto, tiene todos los comandos de shell a su disposición. Uso diariamente sort(), uniq(), awk, etc. Y una recomendación más es ack, un sucesor grep.

+0

Prefiero Slick a VS, pero eso es si hago la vista gorda ante las capacidades de depuración, en el que VS sopla Slick fuera del agua. Aparte de eso sin embargo. Tu publicación es más o menos lo que habría publicado, excepto s/emacs/vim, por supuesto. ; P – Bernard

+0

¿O es eso s/vim/emacs? Creo que es correcto. Me estoy escapando! : o – Bernard

+0

Creo que s/emacs/vim, pero una vez más, un experto en vim lo sabría mejor que un emacs ;-) –

0

Soy otro para KDevelop. Tiene un conjunto muy diverso de herramientas. No estoy muy familiarizado con VS y si tiene o no acceso integrado a la consola a través de su interfaz, pero KDevelop puede permitirle ejecutar una consola dentro del IDE, que siempre me resulta muy útil. Siempre podría darle una oportunidad a Netbeans ahora que tiene soporte completo de C/C++.

Aparte de eso, hago un buen uso de gdb y su versión gui ddd para problemas con el código u otros errores. Para programas desechables, como otros que ya han publicado: uso g ++ en la terminal y hago algunos proyectos más grandes.

12

Cuando desarrollo aplicaciones C++ para Linux, prefiero usar un montón de herramientas cmdline. Vim extendido con una gran cantidad de complementos. Gdb con ddd, valgrind, libefence y SCons (automake es un dolor en ... usted sabe dónde)

+1

¿Qué tipo de complementos usas? – phillipwei

+0

Para Vim -> NERD_tree.vim, a.vim, calendar.vim, code_complete.vim, cscope_maps.vim, taglist.vim – zhengtonic

0

Eclipse CDT para la edición, SVN para control de código fuente, SCons para la gestión de construcción, climatizador automático de construcciones y una propietaria marco de prueba unitaria.

3

Uso el complemento NetBeans C++, que es excelente y se integra con CVS y SVN. El lado de la administración del proyecto también es muy bueno. Estuve listo para correr en minutos. Es un IDE impresionante, pero al ser Java, puede ser un poco lento.

8

emacs, cmake, gdb, git, valgrind. Puede que no sea tan elegante como Visual Studio, pero funciona bien, y es fácil agregar funcionalidad a través de bash scripting o emacs lisp.

+1

+1 con s/emacs/vim /; s/cmake/make /; –

+1

Después de algunos años de probar diferentes herramientas para el desarrollo de Linux, realmente creo que estás usando la mejor herramienta de su tipo. – kovan

+0

Lo mismo aquí que @justsomebody: D –

7

Ahora uso Qt Creator. Es multiplataforma y se integra muy bien con Qt, aunque (por supuesto) tiene la opción de crear una aplicación independiente.

+4

Me encanta Qt Creator. Definitivamente un gran IDE prometedor que se integra muy bien en mi escritorio. –

0

Uso Eclipse + CDT en Windows y Cygwin + g ++ para realizar una compilación cruzada para Linux.

(compiladores cruzados se construyen utilizando crosstool, unas buenas secuencias de comandos fijado para la generación de compiladores cruzados)

12
  • g ++

  • emacs

  • línea de comandos de bash

  • GDB -modo en emacs (tipo MX gdb)

  • hacen

+0

Si agregas ** hormiga ** serías genial. – NVRAM

48

uso un montón de ventanas de terminal. Tengo vim ejecutándose en archivos fuente interesantes, make y g ++ output en otro para errores de compilación o una sesión de gdb para errores en tiempo de ejecución. Si necesito ayuda para encontrar definiciones, ejecuto cscope y uso el soporte cscope de vim para saltar.

Eclipse CDT es mi segunda opción. Es lindo pero enorme, desgarbado y lento en comparación con vim.

Usando terminal windows y vim es muy flexible porque no necesito llevar 400 MB de Java conmigo puedo usar sesiones SSH desde cualquier lugar.

Uso valgrind cuando necesito encontrar un problema de memoria.

Uso strace para ver lo que mi software está haciendo en un nivel de llamada del sistema. Esto me permite limpiar código realmente estúpido que llama al time(0) cuatro veces seguidas o hace demasiadas llamadas a poll() o read() sin bloqueo o cosas como llamar al read() en un socket para leer 1 byte a la vez. (Es decir súper ineficiente y perezoso!)

utilizo objdump -d para inspeccionar el código de máquina, especialmente para un rendimiento bucles internos sensibles. Así es como encuentro cosas como la lentitud del operador de índice de matriz en cadenas en comparación con el uso de iteradores.

Uso oprofile para tratar de encontrar puntos calientes en código optimizado, me parece que a menudo funciona un poco mejor que gprof, y puede hacer cosas como buscar fallas de caché de datos e instrucciones. Eso puede mostrarle dónde dejar caer algunos consejos útiles de prefetch usando el __builtin_prefetch de GCC. Traté de usarlo para encontrar ramas calientes mal pronosticadas también, pero no pude hacer que funcione para mí.

Actualización: He encontrado que la perforación funciona mucho mejor que oprofile. Al menos en Linux. Aprende a utilizar perf y me encanta como lo hago.

+1

Descripción agradable con buenos consejos y una clara justificación. – sototozo

3
  • GCC
  • GHC
  • Vim
  • Cmake
  • cscope
  • GDB
  • Valgrind
  • strace
  • git

¿Hay realmente algo más que pueda necesitar?

+0

lint, cflow, gprof, unifdef –

2
  • Bash
  • Vim
  • Hacer
  • G ++
  • BGF
  • Valgrind
  • Gprof
  • SVN
Nunca

una GUI para ser visto, excepto un buen terminal con soporte de pestañas; mantenga el código, depurador, salida, etc. todo en ventanas separadas y tabique hacia atrás y adelante muy rápido.

+1

+1 excepto s/vim/gvim /, es una GUI con algún valor en ella (pero para ser sincero, he usado vim en una terminal en blanco y negro hace unos 8 años , y las cosas que haría entonces en el departamento de resaltado de sintaxis me siguen sorprendiendo hasta hoy) –

1

Además de muchos ya enumerados, utilizamos el conjunto de herramientas autoconf para implementar nuestro programa a los usuarios.

+0

usado dentro de RPM o no? – NVRAM

+1

@Carter Galle: las autotools son ortogonales a los sistemas de embalaje –

2
  • CMake
  • vim
  • g ++
  • kdevelop (compilado desde SVN diaria!)
  • Mercurial cuando puedo, SVN cuando tengo que, git cuando no hay realmente ninguna otra opción (que contribuye al proyecto que lo utilice)
  • valgrind
+0

http://hg-git.github.com/ debe eliminar los casos "* cuando realmente no hay otra opción *" –

5

Se necesita una cadena de herramientas estándar + un IDE.

No hay mucho que decir sobre la cadena de herramientas estándar. Simplemente instale, p. en Ubuntu/Debian a través de

aptitude install build-essential 

La parte interesante es acerca de un IDE.

Mi impresión personal es que hoy en día, en el siglo 21, vi/emacs/make/autotools/configure no es suficiente para desarrollar proyectos de software de un cierto tamaño (... y sí, por favor por favor culpenme por el herencia herejía ...).

Cuál IDE elegir es simplemente una cuestión de gusto. Encontrarás muchos hilos en SOF. Aquí hay un enlace permanente que explica qué C++ IDE podría ser el "mejor": C++ IDE for Linux.

+1

¿cuál es su herencia? Visual Studio 6.0? -1 para el "absolutamente necesita un IDE", reembolsable en el cambio a "relativamente". ;) –

+0

Arrrgh - He usado la palabra incorrecta. Pensé que el "patrimonio" es una forma muy sofisticada de expresar "blasfemia". La próxima vez consultaré mi diccionario alemán-inglés antes de publicarlo;) –

+0

@just someone: tienes razón con respecto a "absolutamente necesito un IDE". He cambiado la redacción. –

0

Mi primera opción es siempre emacs con una gran cantidad de complementos: ecb da algunos búferes para navegar en las carpetas, gdb, svn o integración git ... Esta es mi primera opción usando Python también.

Como segunda opción, Netbeans con el complemento C++, es muy simple y bastante potente, pero demasiado pesado, creo.

0

Uso lo que haya en el sistema. Prefiero Eclipse CDT como editor y g ++ como compilador. Sin embargo, si eclipse no es una opción, uso vi, que también está bien.

0

El proyecto de incubación Eclipse Linux Tools integra herramientas de desarrollo C/C++. Es un complemento GUI para integrar herramientas como Valgrind, GProf, GCov, SystemTap, etc. en el Eclipse C++ CDT IDE.

Buscar Eclipse Helios IDE para C/C++ de Linux Desarrolladores (incluye componentes La incubación), (120 MB)

encontrado esto después de tratar de construir herramientas de Linux utilizando el archivo .psf disponible. Afortunadamente encontré este paquete escondido justo en la parte inferior de la página de descarga de paquetes de Helios.

Tenga en cuenta que este es un proyecto de incubación por lo que puede esperar que la asistencia solo mejore con el tiempo.

Ver también: Para información actualizada sobre la instalación y el uso de herramientas de Eclipse Linux Click Here

0

FlexeLint para el análisis de código estático, además de la mencionada anteriormente:
Eclipse con CDT, gcc, make, GDB, valgrind, golpe del cáscara.
Control de versión de origen: Clearcase o git, dependiendo del proyecto.

Cuestiones relacionadas