Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

domingo, 22 de noviembre de 2020

PROCESO DE COMPILACION

Un lenguaje de programación es un tipo de lenguaje, que permiten generar un conjuntos de órdenes para el ordenador y que de este modo pueda realizar tareas. 

El primer lenguaje es el codigo maquina o binario que crean un grupo de instrucciones en base de 0's y 1's y es el lenguaje

Existen 2 grupos grandes de lenguajes.

Lenguajes de alto nivel:

Es el lenguaje mas compresible para el desarrollador pero en terminos de optimizacion no es lo mas adecuado al trabajar con hadware.

lenguajes de alto bajo nivel

Es el lenguaje as cercano al lenguaje maquina, en algunas ocaciones se suele utilizar directamente con el hardware, por ser el mas adecuado en terminos de rendimiento.

Ademas existen lenguajes que son considerados en un estado intermedio como es C, aunque otros los llaman de bajo nivel, su uso de punteros y rutinas en codigo ensamblador.

 

Sin importar como se considere un lenguaje de alto o bajo nivel, si es un lenguaje compilado necesitara forzosamente un compilador,que es una especie de traductor que transforma en este código en instrucciones binarias que la computadora pueda entender. Dependiendo de la arquitectura y el sistema operativo, los compiladores más usados son: gnu compiler collection para linux, clank para mac y Msvc para windows. En mi caso voy a utilizar OS linux asi que debo usar para compilar gcc.

Para convertir este código fuente en algo que nuestra computadora pueda interpretar y ejecutar tenemos que compilarlo en 4 pasos:

  •  Pre-procesamiento 

  • Compilación 

  • Ensamble 

  • Enlace 

En el pre procesamiento, el pre procesador identificando las directivas incluidas en el código fuente, haciendo que algunas como puede ser #define #include #ifdef, sean sustituidas, por el valor en donde han sido invocadas.

Con el comando: 

gcc -E edad.c > edad.pp 

Se vera un archivo con extencion .pp Durante este proceso se buscará el contenido del archivo que se indica como directivas y se reemplaza por completo de modo recursivo posiblemente haciendo llamado a otras dependencias. Asi es como un pequeño codigo de una pocas lineas termina con un poco mas de 700 lineas. 

La segunda etapa llamada compilación lo que hace es convertir esas 700 líneas en unas cuantas instrucciones en assembler.

Con el comando:

 gcc -S edad.c 

 Se obtendra un archivo con extension .s, si lo abre, obtendra algo similar a lo anterior, un archivo en codigo en lenguaje esamblador, aunque puede variar dependiendo la arquitectura es de x64 o x86. 

 

La tercera etapa en el proceso de compilación es el ensamblado,

independiente del sistema o la arquitectura, en este punto, el ensamblador tomara el archivo con el codigo assembler y lo conviete en codigo binario. 

Con el comando: 

gcc -c edad.c 

Se obtendra un archivo objeto, con extencion .o . Aunque no es tan frecuente hacer pasar por las etapas anteriores y tener un archivo en codigo assembler, se puede convertir a un archivo objeto con el comando:

 as -o edad.o edad.s 

Al abrir el archivo con extencion .o se puede aprenciar que es ilegible para los humanos. 

La última etapa es el enlazado, el compilador en cadena los archivos.o ademas creando los enlcaes de lsa distintas librerias que se invocan desde estos archivos. El enlazador se denomina ld, por motivos practicos no voy a ejemplificarlo, por tener que especificar las rutas de las librerias que seran consumidas por el programa.

En cambio, gcc con el siguiente comando, permite hacer este enlace con los archivo con extension .o:

gcc -o edad edad.o 

Para hacer los 4 pasos con un solo comando: 

gcc -o edad edad.c 

Por defecto cuando se crea un enlace dinamico, esto quiere decir que el ejecutable carga desde la memoria del equipo las liberias necesarias para funcionar correctamente, mientras que el enlace estatico hace que el ejecutable sea mas independiente por tener sus librerias incorporadas, pero esto hace que el archivo sea mas pesado. 

Para especificar el enlace estatico con el flag -static: 

gcc -static -o edad edad.c

 

ref: https://gcc.gnu.org/onlinedocs/ 

ref: man gcc

jueves, 13 de agosto de 2020

COMO INSTALAR DOCKER EN UBUNTU 20.04

Docker

es un sistema opensource que busca empaquetar, gestionar el despliegue de las aplicaciones con los recursos necesarios para que funcione, en algo llamado contenedores. Así creando una especie de máquinas virtualizadas super ligeras que favorece la implementación rápida y modular de un software en cualquier equipo que posea Docker.


Prerequisitos

Es necesario contar con una máquina con sistema operativo Ubuntu 20.04 con permisos de usuario. Además de actualizar la lista de paquetes del sistema y unos complementos de HTTP que apt requiere.

 sudo apt-get update
 sudo apt install apt-transport-https ca-certificates curl software-properties-common

Instalacion

Lo primero que se hace es descargar la llave GPG para verificar la firma de los paquetes

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Luego descargar el repositorio de Docker

 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Se actualiza los paquetes del sistema

 sudo apt update

Ahora se instala la versión comunity de Docker

 sudo apt install docker-ce

Solo falta verificar si el servicio de Docker está corriendo

 sudo systemctl status docker

Docker-Compose

Si piensa trabajar con varios contenedores a la vez y que se comuniquen entre ellos, es recomendable instalar Docker-Compose

 sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

En el siguiente post, profundizaremos un poco más Docker.

martes, 11 de agosto de 2020

COMO INSTALAR UBUNTU 20.04 LTS - Actualizado

Ubuntu

es un sistema operativo opensource (código libre y abierto a modificaciones) basada en Debian y pudiendo descargarlo Ubuntu de forma gratuita. Posee múltiples versiones y soportes que pueden llegar desde una versión de 6 meses a 5 años desde su fecha de lazamiento.
En este caso se instalara Ubuntu server versión 20.04 (LTS) o versión de soporte extendido que brindando un espacio adicional para que el usuario final pueda migrar a la siguiente versión.


Requisitos de Instalación

Requisitos Mínimo

 Procesador 700 MHz de 64 bits, 1 GB de memoria RAM, 10 GB de disco duro, lector CD/DVD o puerto USB para la instalación.

Requisitos Recomendados:

 Procesador 1 GHz x64 en adelante, 2GB de memoria RAM en adelante, 20 GB de disco duro, lectora CD/DVD o puerto USB para la instalación.


Para obtener la imagen ISO lo puede hacer desde aquí, la versión de escritorio y la versión de servidor , pudiendo usar desde un cd/dvd, usb o en una maquia virtual (Virtualbox, VMware los más populares). En este caso haré la instalacion desde una maquina virtual usando la versión de servidor.



Instalacíon

 1. Despues de haber configurado la maquina y encenderla,lo primero que se observa es la selección del idioma, luego configuración de teclado, esta configuración lo que hace es cambiar la posición de las teclas especiales y los símbolos, que normalmente esta asociado a la región en la que vives.


2. Selecciona la configuración de red además si esta conectado a internet se recibira una dirección ip del servidor dhcp.



3. Si necesita un servidor proxy para la salida del servidor a internet se coloca en el espacio, sino se deja tal como esta.



4. En la configuración del archivo espejo, suele asociarse al país donde estará el servidor automáticamente.



5. Ahora la configuración del almacenamiento, seleccionando la partición del disco además la adminisitración del disco, si desea encriptarlo con una contraseña o no y segmentar la partición a gusto. En este caso dejo la partición por defecto.



6. Despues de configurar el almacenamiento, guarda los cambios permanentes.



7. Llego la configuración de perfil de usuario, donde se le da el nombre del servidor, nombre del usuario  contraseña para ingresar al equipo.



8. En este apartado se habilita el protocolo ssh que es utilizado para conexión remota a este equipo y exportar el archivo de con la llave o crear una nueva. Igualmente se puede configurar mas adelante si así se requiere igual que otros paquetes.



9. Solo falta reiniciar para terminar todas las configuraciones.


10. Solo es ingresar y ya tienes un equipo con sistema operativo ubuntu