Cómo Programar En C/C++ En Debian/Ubuntu

+1
0
-1

Hola, ultimamente veo que una de las dudas que más se repite es cómo programar en C/C++ en Ubuntu. Aquí pongo cómo lo haríamos con Gedit (Kate para KDE) y compilando nuestros programas por terminal. Supongo que aun poniendo esto aquí seguirán apareciendo gente preguntando la misma duda, pero bueno si hay alguien que lo lea antes de plantear la duda ya habremos adelantado un poco.

En este post he añadido OpenGL para que la gente tenga una noción de cómo compilar aquellas librerías que se basan en C/C++ pero que no vienen "instaladas" por defecto en C/C++, como pueden ser SDL, GSL, OpenGL, muParser, etc

Las librerías para poder compilar en C/C++ que instalaremos desde terminal con aptitude-install o con apt-get install o desde synaptic (recomiendo esta última) son: (He añadido paquetes de documentación y un mayor apoyo sobre comandos de terminal )

$ sudo apt-get install build-essential cpp cpp-2.95-doc cpp-3.3 cpp3.4 cpp-4.0 g++-3.4 gcc gcc-2.95-doc gcc-3.3 gcc-3.3-base gcc-3.3-doc gcc-3.4 gcc-3.4-base gcc-3.4-doc gcc-4.0 gcc-4.0-base gcc-4.0-doc gcc-4.0-locales gcc-doc gobjc-4.0 libg++2.8.1.3-dbg libg++2.8.1.3-dev libg++2.8.1.3-glibc2.2 libgcc1 c-cpp-reference doc++ libstdc++5 libstdc++6 libstdc++6-4.0-dbg libstdc++6-4.0-dev libstdc++6-4.0-doc libstdc++6-dbg libstdc++6-dev libstdc++6-doc manpages-es-extra

$ sudo apt-get install devhelp

Con esto también instalaremos documentación de ayuda para C/C++ y comandos de terminal.
Para poder trabajar con OpenGL instalaremos las siguientes:

$ sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev ftgl-dev gle-doc glut-doc glutg3 glutg3-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa libgl1-mesa-dev libgl1-mesa-dri libglut3 libglut3-dev mesa-common-dev mesa-demos mesa-swrast-source mesa-utils

Para compilar programas nuestros escritos en C/C++ desde terminal escribiremos, para el caso de C:

$gcc miprograma.c -o miprograma
$./miprograma

Para el caso de C++ :

$g++ miprograma.cpp -o miprograma
$./miprograma

Si nuestro programa de C++ tiene ficheros .h realizados por nosotros (como clases) para compilar haremos:

$g++ clase1.cpp main.cpp -o main
$./main

Siendo clase1.cpp el programa correspondiente a clase1.h y main será nuestro programa principal, es decir; el programa donde declaramos main().

Para compilar programas con OpenGL escritos en C++, escribiremos:

$g++ miprograma.cpp -o miprograma -lglut
$./miprograma

Si lo hemos escrito en C basta cambiar g++ por gcc y .cpp por .c.

En ubuntu podemos obtener ayuda de lenguajes como C/C++ desde Sistema->Ayuda->Documentación del Sistema, nos aparecerá una pantalla en la que haremos click en Aplicaciones y luego en Programación, y desde ahí elegiremos lo que deseamos. Aquí tenéis un pantallazo:

Si trabajáis con gedit podéis instalar gedit-plugins desde Synaptic, es muy útil ya que nos provee de una serie de plugins que nos facilitan la tarea, sobretodo uno que nos permite tener una vista de la terminal en el mismo gedit con la que podemos interactuar.

Sé que esta no es la formaa más completa para compilar nuestros programas pero creo que esta es la mejor forma de empezar a programar en Linux .

A ver si tengo tiempo y posteo cómo programar con algún IDE como Anjuta o Eclipse, aunque ultimamente prefiero hacerlo con gedit+terminal, los IDES generan mucha basura ;-)

Esto es un Copy-paste actualizado de un post que puse hace tiempo en MiBlog

Dejo enlaces para aprender C/C++

Con Clase 

Aprende C++ Con VideoTutoriales 

Saludos :-)

Comentarios

Imagen de Festor

 Gracias por la info :) , me interesa mucho ese lenguaje de programación y a ver cuando me pongo a practicar con el.

Hay un problema, en los repositorios de la 7.04 no esta el paquete cpp3.4

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de Cristobal López

Esos nombres de paquetes son sólo como una guía, por eso pongo que lo hagáis mejor con Synaptic, es que las versiones de esos programas van cambiando conforme cambia ubuntu de versión. Si quieres pon

sudo apt-get install cpp*

Y así instalas todos los cpp de un plumazo. Igual puedes hacer con gcc y demás.

Antes se me ha olvidado, pero un programa que viene muy bien para cambiar las diferentes alternativas de compilación de C/C++ o de java, o de Python, o de Qt, y muchas más cosas es galternatives. Lo podéis instalar desde Synaptic

Saludos 

MiBlog

Imagen de Festor

 Gracias por la info Cristobal López.

Una pregunta: ¿Qué IDE me recomiendas para empezar a programar? ¿ Anjuta, Eclipse o simplemente con un editor de textos y la terminal?

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de Cristobal López

Bueno en el post creo que medio contesto tu pregunta. Pero te digo que pruebes a ver si te convence alguno y si no te convencen pues editor de textos+terminal ;-)

Saludos :-)

MiBlog 

Imagen de Festor

A ver si tengo tiempo y posteo cómo programar con algún IDE como Anjuta o Eclipse, aunque ultimamente prefiero hacerlo con gedit+terminal, los IDES generan mucha basura

Ahh, pos vaya.. yo pensaba que con un IDE como Eclipse sería algo más sencillo (probe el Anjuta y no esta mal aunque es algo simple)

Pero... ¿a que te refieres con lo de generar mucha basura? ¿Comentarios con #?

Por ejemplo el Ajunta te proporciona soporte automatico de internacionalizacion con el gettext, algo que me sorprendio mucho y me parece muy util.

Por cierto ya que estamos, ¿tu sabrias implementar el gettext en un codigo fuente? 

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de maestrodenada

Como bien sabe "Cris" estoy tratando de programar en C++ desde hace ya tiempo (muchas veces he preguntado en Guadalinex y por aquí). En un entorno visual.

Seguí  las instrucciones dadas en los foros sobre los distintos archivos a instalar y al final problemas varios sobre versiones. Hasta que conseguí ejecutar una instalación en Anjuta las pase canutas (con lo fácil que resultaba en el builder, sólo era preciso saber C++), así que con el objeto de contribuir a esta comunidad estoy escribiendo un tutorial desde 0.

Sobre la instalación de AGU (Anjuta Glade en Ubuntu) he escrito esto: http://maestrodenada.com/manualanjuta/cp0/

 

Con el tiempo espero crear un índice o similar, para tener un acceso más fácil.

También he escrito algo, pero pienso que me ha quedado muy complicado así que no extrañe a nadie que en sucesivas entregas el texto esté escrito de forma diferente.

http://maestrodenada.com/manualanjuta/cp1/ 

Imagen de Festor

 Muchisimas gracias maestrodenada, ese tipo de manuales me encantan!!! Me los leo de arriba a abajo hasta que me canse xD 

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de maestrodenada

Lo dicho he introducido algunas modificaciones, he creado un índice ( http://maestrodenada.com/manualanjuta/ )y algo he metido de programación gráfica.

 

Espero que de aquí a septiembre, en algunas de estas noches de calor sofocante, pueda commpletar al menos lo más básico de Anjuta +Glade + Ubuntu.

Es cierto que muchos de los problemas que he tenido se resuelven en la nueva versión de Anjuta (2.algo), pero todavía no se puede cargar desde los repositorios "oficiales" de Ubuntu, por lo que sigo adelante con éste.

Imagen de Festor

 Te puedes bajar Anjuta 2.20 de los repositorios oficiales del proyecto para Ubuntu 7.04

Mira esto:

http://anjuta.sourceforge.net/downloads

Donde pone "Unofficial ubuntu feisty repository (only i386 and only binaries)"

Yo lo he instalado desde ahi y va muy bien.

Muchisimas gracias por la guía, me esta resultando bastante util para aclarar algunas cosillas que se resistian xD 

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de maestrodenada

Ya los he bajado, y los tengo instalados en otra máquina, por eso, se que funciona mejor [más intuitivo] (en la próxima entrega trataré de mostrar la inclusión de las librerías al proyecto de Anjuta).

Lo que me refiero, es que si alguien empieza en Linux, y mi intención es ayudar a estos, observará que desde Synaptic no puede, amen de que trastée con repositorios,...

 

Un saludo y gracias por dar las gracias, anima a seguir escribiendo.

 

Imagen de Festor

 Acabo de hacer una miniguia sobre como instalar la última version estable de los repositorios oficiales del proyecto Anjuta.

Solo es compatible con procesadores de 32 bits (osea la mayoria)

http://nadock.wordpress.com/2007/07/30/programacion-instalando-anjuta-220-hurricane/ 

Respecto a la version de los repositorios oficiales de Ubuntu 7.04, la ultima version tiene muy buena pinta :D

****-------------------****

The Life of Nadock Blog

****-------------------****

Imagen de Cristobal López

Te esta quedando perfecto tio, me lo he añadido ya a mi sabrosus.

El otro día hice un video ( bastante malillo) sobre C++ con gedit y la terminal, si a alguien le interesa pongo el enlace

Enlace Al Video 

 Para escuchar mi voz subid el volumen a tope.

Saludos :-) 

MiBlog

Imagen de maestrodenada

Cristobal, me gustaría preguntarte que programas utilizas para grabar la pantalla...

También te informo que el aspecto básico del manual de Anjuta y Glade le queda menos, acabo de añadir unos apartados.

Un saludo

PD: Tu escritorio impresionante (y no sólo por tu "amiga") 

Imagen de Cristobal López

Pues utilizo recordmydesktop junto con CompizFusion para poder acercar la pantalla con zoom ( Presionando la tecla windows y la rueda del ratón)

Estoy tomando apuntes de tu web, sobretodo la parte a palo seco, sin el glade.

Saludos y muchas gracias por tu web, es magnífica :-) 

MiBlog

Imagen de Cristobal López

Mira a generar basura me refiero a que te crea muchos ficheros que a mi no me sirven para nada, ficheros make y demás para poder instalar luego tu programa. Todo eso se puede hacer cuando tu proyecto lo tienes finalizado y así no ocupas memoria con ficheros que ni van ni vienen.

Sobre gettext no se  nada, yo programo para aprender a programar métodos matemáticos sobre C++, o sobre octave o scilab. Me gusta programar sobre el método de Newton, Runge-kutta, fourier y demás. Lo hago por placer, por pasar el rato, por aprender...

Maestrodenada con tu tutorial podríamos decir que estás hecho todo un maestro ;-) Muy buen tutorial el que estás haciendo tio, te has ganado el jamón de patanegra guadalinuxero ;-)

Saludos a ambos :-) 

MiBlog

Imagen de gmolleda

Maestrodenada, es exactamente el tutorial que buscaba para programar con Anjuta (hasta ahora sólo he hecho algo con KDevelop).

Te he dejado un mensaje en tu usuario de Guadalinex, leelo y me cuentas.

Imagen de maestrodenada

Por aquello de que aquellos que siguen este tema, tienen "derecho" a saber, te comentaré que respecto a la idea de publicar el artículo en una revista (no lo había pensado, porque para mí ya está publicado, aunque no tenga isbn o similar ).

Sobre cuando voy a terminar el manual, pienso que nunca (especialmente si recibo los halagos que tanta satisfacción me suscitan), estaré siempre modificando y añadiendo cosas (tengo casi 20 gigas - ventajas de tener servidor independiente.

No obstante espero que antes de volver al curro (septiembre) me de tiempo a añadir lo más básico de Anjuta y Glade. (lo cual como dirían en el juego de la Oca -televisivo- es prueba superada)

Después investigaré sobre como diseñar los controles de usuario (por ejemplo, un botón circular) y cargarlos en tiempo de ejecución, en función de las necesidades del usuario. En ello, estoy, pero poco a poco.

Espero no decepcionarte, y muy pronto acabar lo básico. 

Imagen de jmcb

Mil gracias maestrodenada , yo también hice mis pinitos con turbo c , c++ Builder, VBb. Al adentrarme en Linux me encontré exactamente con lo que describes en tus inicios con Glade/Anjuta.Las posibilidades son grandes y la libertad también, pero el precio que se paga al principio es alto y decepcionante , las dependencias ,librerias etc es un galimatías solo apto para muy expertos en el mundo linux, para los aficionados que quieren hacerse un programa a su medida y nada más el mundo linux es complejo.Creo que con gente como tu que es totalmente altruista y pone a disposición de todos el montón de horas en que te habras quemado las cejas para descubrir este entramado , merece  una felicitación  , y se bien que no exagero cuando hablo de dedicación y horas empleadas. Sigue así,y haremos de linux un sistema universal.

Expone cuando puedas los controles de lista, arboles , combo etc. 

Y sin abusar te pregunto , sabes algo del RAD lazarus y el error Can´t find Glib al compilar.

Gracias otra vez. 

 

 

Imagen de maestrodenada

Poco puedo ayudarte.

Tal y como cuento en el "manual", en el primer intento del primer programa, a mí el error que me surgió fue "you must glib installed". Ahora no sé si es el mismo error, que mostramos líneas distintas del mensaje, o bien es un error distinto (si tienes instaladas las librerías, habría que ver que has escrito en el programa).

Mi afición [no soy profesional] me ha llevado a probar muchos lenguajes: desde el Basic del Commodore 64 al PHP, pasando por Pascal (en Delphi), Modula2, C, C++, VBasic, ... Sin embargo, y no sabría decir porqué, Pascal no ha sido una de mis predilecciones, así que he tenido que mirar en San Google que era eso de RAD lazarus... Lo siento, nuevamente.

Sobre otros controles, aunque no estaba en mi intención inicial, vuestra "gratitud" me anima a seguir... Si bien es cierto que se acaban las vacaciones... y esto del ordenador no es sino un hobby.

Un saludo

Imagen de maestrodenada

Hoy en el Centro de trabajo (centro TIC), he visto que tenía instalado el Lazarus, hemos estado probándolo.

 

En una primera instancia me recuerda al Delphi (excepcional programa de Borland), y me ha causado muy buena impresión (ya quisieran los de Anjuta), 

habrá que pensarse seriamente eso de actualizar los conocimientos en Pascal

Un saludo