jueves, 30 de agosto de 2012
Programación en C/C++ bajo GNU/Linux (I parte)
12:07 | Publicado por
airwolf97 |
Editar entrada
El lenguaje de programación C fue creado por Dennis Ritchie en 1972 en los laboratorios Dell, derivado de los lenguajes B y BCPL.
Es un lenguaje de alto nivel , pero de los lenguajes de este nivel es el que más se acerca al lenguaje máquina, Su importancia radica en que Sistemas Operativos como Windows Y GNU/Linux sehan construído en base a este lenguaje.
A mediados de los 80, Bjarne Straustroup , creó el Lenguaje C++, el cual permite la manipulación de objetos, y se le agregaron posteriormente facilidades para programación generica, junto a las ya incorporadas de programación estructurada y programación orientada a objetos.
En mis tiempos de estudiante de programación aprendí a programar en C/C++ usando el compilador Turbo C++ de Borland. Tengo que decir que con Turbo C++ se podían hacer programas con presentaciones muy profesionales, sin embargo habían muchas cosas de las que aprendí en este compilador que no son ANSI C o ISO C++ , sino que son propias del lenguaje Turbo C++ de Borland. Por ejemplo la librería conio.h que es la que usaba para el manejo de pantalla, es exclusiva de Borland, y que para poder hacer cosas similares a las que se puede hacer en esta librería en GNU/Linux es necesario manejar una librería llamada ncurses.h
aunque para muchos les es difícil usarla. Existe un proyecto llamado conio4linux que es una implementación de conio.h de Borland y que incluye varias de las funciones Borland.
Pero , continuemos con el tema.
INSTALACION DE COMPILADOR GCC
GCC es el compilador estándar del proyecto GNU. Por lo general viene en todas las distribuciones GNU/linux. Si no está instalado, tenemos dos opciones : 1) Instalarlo mediante consola a través del manejador de paquetes de nuestra distribución, 2)Instalarlo de forma gráfica a través de un Administrador de paquetes.
En Ubuntu/Debian y derivadas, podemos instalarlo mediante apt:
$ sudo apt-get install gcc-4.7.1 gcc-4.7.1-doc gcc-4.7.1-locales gcc-4.7.1-multilib
La otra opción es mediante el gestor de paquetes de Synaptic, en la cual verificamos los paquetes ya señalados arriba, que no estén instalados y los marcamos para instalación.
PRIMER PROGRAMA EN C
Por lo general, muchos programadores de C/C++ en GNU/Linux utilizan vi como editor para sus programas, o emacs,. Sin embargo vi es un editor poderoso pero complejo de manejar para un principiante. Lo mas sencillo es usar un editor como pico o nano. pico es un editor de texto para sistemas Unix y basados en Unix que esta integrado con el sistema de correo Pine. ambos desarrollados por la Universidad de Washington , sin embargo, su licencia no es de software libre por lo que muchas distribuciones los han marginado y en su reemplazo incorporaron nano que es un clon de pico.
Escribiremos nuestro primer programa en C.
#include
// Estas línea son comentarios y serán ignoradas por el compilador
// Observemos la sección include . Esa es la librería
// estándar de C y la más básica, todo programa debe
// tenerla incorporada
main()
// main es la función principal de todo programa en C
{
printf("Hola Mundo\n");
// Se muestra la frase "Hola Mundo" en pantalla , y se introduce un salto de línea al final
}
guardamos el programa como "holamundo.c"
COMPILANDO EL PROGRAMA
Una vez compilado el programa debemos compilarlo primero y luego linkearlo. En los compiladores comerciales como Turbo C++ , Watcom C++, etc. estos pasos el compilador los realiza de una sola vez.
En GCC para compilar nuestro programa escribiremos en la consola:
$ gcc holamundo.c -o holamundo
Con esta línea creamos el ejecutable holamundo. Si se ejecuta
$ gcc holamundo.c -c
Se compilara el programa , pero el linkeado se hará por defecto en el archivo a.out
Para la ejecución del programa debemos anteponer ./ al nombre del ejecutable, en este caso
$./holamundo
Hola Mundo
Otra forma de compilar el programa es la siguiente:
$ gcc holamundo.c -c
$ gcc holamundo.o -o holamundo
Esta opción es un poco más avanzada ya que nos permite, en caso de programas mas avanzados, incluir las correspondientes librerías.
Mas adelante veremos las diversas funciones de C como lenguaje,y veremos otros ejemplos
Para los usuarios de Windows, en otro post explicaré como instalar gcc en Windows o ver algunas herramientas como CygWin que nos permite ejecutar aplicaciones GNU en Windows.
Etiquetas:
C/C++,
Comandos GNU/Linux
Suscribirse a:
Enviar comentarios (Atom)
segunda mano
BlogUpp!
Directorio de Blogs
Directorio de Blogs
Blog Archive
- 2015 (1)
- 2014 (1)
- 2013 (1)
-
2012
(118)
- octubre(3)
- septiembre(8)
-
agosto(28)
- MinGW y Cygwin : GNU para windows
- Programación en C/C++ bajo GNU/Linux (I parte)
- Ubuntu 12.04.1 Released
- Manjaro Linux : ArchLinux para principiantes
- Happy Birthday Linux Kernel
- Kernel 3.5.2 en Ubuntu 12.10,Debian 6.0 y Distrib...
- XAMPP con MariaDB en vez de Mysql
- Xming + Putty: Ejecución remota de aplicaciones
- Percona Server
- Whimp: Nginx, MariaDb y Php
- ¿Que pasará con MySQL?
- La quiebra de SCO
- ¿Problemas con tu impresora?: Visita Epsonianos.com
- SERVER OPTIMIZED LINUX: DISTRIBUCIÓN GNU/LINUX ORI...
- Colebuntu: Distribución aragonesa de Ubuntu
- Plataforma Moodle (IV parte): Acciones de usuario ...
- Plataforma Moodle (II parte) : Interfaz de Adminis...
- Plataforma Educativa Moodle (I parte)
- Algunas distros GNU/LINUX especializadas en Netbooks
- N-vidia ciera vulnerabilidad que afectaba a sus d...
- OpenELEC Distribución GNU/Linux para Mediacenter
- Emmaubuntüs 21.01: El xubuntu Humanitario
- Investigadores mostrarán framework para crear Malw...
- Entornos de desarrollo Apache/php/Mysql
- Plataformas para aprender programación
- DoudouLinux: GNU/Linux para preescolares
- ¿Agoniza PHP?
- Microsoft eliminará Hotmail y lo cambiara por Outlook
- julio(24)
- junio(15)
- marzo(7)
- febrero(21)
- enero(12)
- 2011 (36)
- 2008 (1)
Lista de sitios
- Barrapunto.com
- Blog de Eugenia Bahit
- Blog de Xavier Araque: Diseño Gráfico con herramientas libres
- Code Academy
- Cofradía.org
- Crónica de un Desarrollador y como no morir en el intento
- Delirium Labs
- detodoprogramacion.com
- El baúl del programador
- El tux Angelverde
- Espacio Linux
- Foros Linux-cd.com.ar
- Geeks & Linux Atelier!
- Grupo de Usuarios Linux de Argentina
- Grupo de Usuarios Linux de Barcelona
- Grupo de Usuarios Linux de Venezuela
- Khan Academy
- La Libertad de Desarrollar no tiene precio: Blog de Ernesto Crespo
- Libro Blanco del Software Libre
- Linux Echoes
- Linux en CD
- linux en español
- Linux Hispano
- Linux Magazine
- Linux para Todos
- Linux para Todos
- Linuxdata
- Lopst
- Mundo Linux
- Pillate un Linux
- Planeta Linux
- Plaza Linux
- Sitio de Programación del Guille
- Sitio Oficial de Lihuén
- Sitio oficial de Ututo
- Syrius InfoBlog
- tux apuntes
- Ubuntips
- Ubuntizando.com
- Usuario Debian
- Usuarios chilenos de Debian
Blog Archive
-
▼
2012
(118)
- ► septiembre (8)
-
▼
agosto
(28)
- MinGW y Cygwin : GNU para windows
- Programación en C/C++ bajo GNU/Linux (I parte)
- Ubuntu 12.04.1 Released
- Manjaro Linux : ArchLinux para principiantes
- Happy Birthday Linux Kernel
- Kernel 3.5.2 en Ubuntu 12.10,Debian 6.0 y Distrib...
- XAMPP con MariaDB en vez de Mysql
- Xming + Putty: Ejecución remota de aplicaciones
- Percona Server
- Whimp: Nginx, MariaDb y Php
- ¿Que pasará con MySQL?
- La quiebra de SCO
- ¿Problemas con tu impresora?: Visita Epsonianos.com
- SERVER OPTIMIZED LINUX: DISTRIBUCIÓN GNU/LINUX ORI...
- Colebuntu: Distribución aragonesa de Ubuntu
- Plataforma Moodle (IV parte): Acciones de usuario ...
- Plataforma Moodle (II parte) : Interfaz de Adminis...
- Plataforma Educativa Moodle (I parte)
- Algunas distros GNU/LINUX especializadas en Netbooks
- N-vidia ciera vulnerabilidad que afectaba a sus d...
- OpenELEC Distribución GNU/Linux para Mediacenter
- Emmaubuntüs 21.01: El xubuntu Humanitario
- Investigadores mostrarán framework para crear Malw...
- Entornos de desarrollo Apache/php/Mysql
- Plataformas para aprender programación
- DoudouLinux: GNU/Linux para preescolares
- ¿Agoniza PHP?
- Microsoft eliminará Hotmail y lo cambiara por Outlook
About Me
- airwolf97
Archivo del blog
-
▼
2012
(118)
- ► septiembre (8)
-
▼
agosto
(28)
- MinGW y Cygwin : GNU para windows
- Programación en C/C++ bajo GNU/Linux (I parte)
- Ubuntu 12.04.1 Released
- Manjaro Linux : ArchLinux para principiantes
- Happy Birthday Linux Kernel
- Kernel 3.5.2 en Ubuntu 12.10,Debian 6.0 y Distrib...
- XAMPP con MariaDB en vez de Mysql
- Xming + Putty: Ejecución remota de aplicaciones
- Percona Server
- Whimp: Nginx, MariaDb y Php
- ¿Que pasará con MySQL?
- La quiebra de SCO
- ¿Problemas con tu impresora?: Visita Epsonianos.com
- SERVER OPTIMIZED LINUX: DISTRIBUCIÓN GNU/LINUX ORI...
- Colebuntu: Distribución aragonesa de Ubuntu
- Plataforma Moodle (IV parte): Acciones de usuario ...
- Plataforma Moodle (II parte) : Interfaz de Adminis...
- Plataforma Educativa Moodle (I parte)
- Algunas distros GNU/LINUX especializadas en Netbooks
- N-vidia ciera vulnerabilidad que afectaba a sus d...
- OpenELEC Distribución GNU/Linux para Mediacenter
- Emmaubuntüs 21.01: El xubuntu Humanitario
- Investigadores mostrarán framework para crear Malw...
- Entornos de desarrollo Apache/php/Mysql
- Plataformas para aprender programación
- DoudouLinux: GNU/Linux para preescolares
- ¿Agoniza PHP?
- Microsoft eliminará Hotmail y lo cambiara por Outlook
0 comentarios: