1.2.- Programar Linux

Mucha gente piensa que programar Linux significa usar C. Es cierto que UNIX fué escrito originalmente en C y que la mayoría de aplicaciones UNIX están escritas en C, pero no es la única opción disponible para los programadores de Linux, ni en realidad para los programadores de UNIX.

Nota_programacionExisten varios lenguajes de programación disponibles para los sistemas Linux, y muchos son gratuitos y estan disponibles en colecciones de CD-ROM o en archivos FTP en diferentes sitios de Internet. A continuación presentamos una lista parcial de los lenguajes de programación disponibles para un programador Linux:

Lenguajes_programacion_linuxLes mostraremos como usar una shell Linux (bash) para desarroyar aplicaciones pequeñas o medianas. Pero la mayor parte del tiempo la concentraremos principalmente en C . Centraremos la atención en la exploración de la interfaces de programación de Linux desde la perspectiva del programador de C dando por echo que posee cierto conocimiento del lenguaje de programación C (si no es así vea la sección C para principiantes próximamente).

Programas Linux

Las aplicaciones Linux se presentan mediante dos tipos de archivos especiales:

  1. Ejecutables.
    • Son programas que puede ejecutar directamente el ordenador, se corresponden con archivos .exe de Windows.
  2. Scripts.
    • Son colecciones de instrucciones para otro programa, un intérprete que hay que seguir. Se corresponden con los archivos .bat o .cmb de Windows, o los programas de Básic interpretados.

Linux no necesita que los ejecutables o los scripts tengan un nombre de archivo específico o una extensión determinada. Los atributos de los sistemas de archivos se usan para indicar que un archivo es un programa que se puede ejecutar. En Linux, puede reemplazar los scripts por programas compilados (y viceversa) sin que afecte a otros programas o a la gente que los llama. De hecho, a nivel de usuario,no existe diferencia entre ambos.

Cuando se registra en un sistema Linux, interactua con un programa shell (a menudo bash) que ejecuta programas al igual que lo hace el incitador de comandos de Windows. Localiza los programas solicitados a través del nombre, buscando un archivo que tenga el mismo nombre que el proporcionado en el conjunto de directorios. Los directorios de busqueda se almacenan en una variable shell, PATH, al igual que ocurre con Windows, la ruta de busqueda la configura su administrador de sistema y suele contener espacios estándar donde se almacenan los programas del sistema. Estas rutas incluyen:

  • /bin.- Binarios, programas empleados para arrancar el sistema.
  • /usr/bin.- Binarios de usuario, programas estandar disponibles para el usuario.
  • /usr/local/bin.-Binarios locales, programas específicos de una instalación.

Un acceso de administrador, como root, puede usar una variable PATH que incluya los directorios en los que se encuentran los programas de administración del sistema, como /sbin y /usr/bin.

Los componentes opcionales del sistema operativo y las aplicaciones de terceros se pueden instalar en subdirectorios de /opt, y los programas de instalación se podrían añadir a su variable PATH por medio de los scripts de instalación del usuario.

progrmacion_nota2

Tenga en cuenta que Linux, al igual que UNIX, usa los dos puntos (:) para separar las entradas en la variable PATH, en vez del punto y coma (;) tal como usan MS-DOS y Windows. Veamos un ejemplo de una variable PATH:

Programar_ejemplo_path

Aquí la variable PATH contiene entradas relativas a la ubicación de los programas estándar, del directorio actual (.), un directorio raiz del usuario, y el Sistema X Windows.

programar_nota3
Editores de texto

Podemos utilizar cualquier editor de texto para escribir los programas, algunos programadores se decantan por el Emacs porque es un editor poderoso, deberíamos emplear parte del tiempo en aprender a utilizarlo. En casi todas las distribuciones Linux viene el Emacs a modo de paquete opcional. Para obtener más información de Emacs, podemos usar la ayuda on-line, para hacerlo debemos abrir en un terminal el Emacs y después pulsamos las teclas CTRL-H seguido de la letra t del tutorial.  Emacs dispone también de un completo manual pulsando las teclas CTRL-H y la tecla i de información.

Emacs

El compilador C

Usaremos el compilador gcc que es el que proporciona las distribuciones Linux, y porque acepta la sintaxis estandar ANSI para C. En los sistemas compatibles con POSIX, el compilador C se denominaba c89. A lo largo de la historia, el compilador C se denominaba simplemente cc.

Primer programa Linux C

Con este ejemplo empezaremos a desarroyar en Linux usando C para la escritura, la compilación y la ejecución de su primer programa Linux. El punto de partida será el famoso «Hola mundo».

hola mundoLuego comprobamos, compilamos y enlazamos con gcc, y ejecutamos el programa…

compilar_holamundo

Veamos como funciona

Le pedimos al compilador de GNU C (en Linux conocido como cc) que convierta el código fuente C en un archivo ejecutable denominado «hello». Cuando ejecute el programa mostrará un saludo. Este es el ejemplo más sencillo, pero si funciona en su sistema, será capaz de compilar y ejecutar el resto de ejemplos.

Con este programa que vamos a ejecutar es un buen momento para remarcar algunas cuestiones básicas. Posiblemente el programa «hello» se encuentre en su directorio raíz. Si PATH no incluye una referencia a si directorio raíz, la shell no podrá encontrar «hello». Es más, si uno de los directorios de PATH contiene otro programa denominado «hello», se ejecutará dicho programa en su lugar. Esto ocurrirá también si  si se menciona dicho directorio en PATH antes de su directorio raíz. Para solucionar este gran problema, puede añadir ./ delante del nombre del programa (./hello). Así indicaremos a la shell que ejecute el programa que se encuentra en el directorio actual con el nombre proporcionado. (El punto es un alias del directorio actual.)

La opción -o name indica al compilador donde ubicar el ejecutable, el compilador colocará el programa en un archivo denominado a.out (que hace referencia a la salida del compilador). ¡Acuérdese de buscar un a.out si cree que a compilado un programa y no lo puede encontrar!

desglose_gcc

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.