[TUTORIAL]Como compilar GMP 5.1.0(The GNU Multiple Precision Arithmetic Library)

Iniciado por avesudra, Enero 04, 2013, 08:41:38 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Como compilar GMP 5.1.0(The GNU Multiple Precision Arithmetic Library)
Está estrictamente prohibido sin mi permiso copiar íntegramente el tutorial ya que ha sido un trabajo traducir la página de GMP y actualizar el antiguo tutorial que tenía, si puedes, sin embargo, basarte en él.
How to build GMP 5.1.0
¿Que es GMP?
GMP es una librería libre para operaciones aritméticas de precisión arbitraria, operando con enteros con signo, números racionales, y números de punto flotante. No hay un  límite para la precisión excepto la memoria disponible en la máquina donde se está ejecutando GMP. GMP tiene un rico set de funciones, y las funciones tienen una interfaz regular.Las principales aplicaciones de GMP son aplicaciones de criptografía e investigación, aplicaciones de seguridad de Internet, sistemas algebraicos, álgebra computacional de investigación, etc.

GMP está cuidadosamente diseñado para ser lo más rápido posible,  para pequeños y enormes operandos. La velocidad se logra mediante el uso de fullwords y con el tipo de aritmética básica, utilizando algoritmos rápidos, con alta optimización en código assembler en la mayoría de los bucles internos comunes para un montón de CPUs, y haciendo un énfasis general en la velocidad.

El lanzamiento de GMP se hizo en 1991. Está continuamente desarrollada y mantenida, con un nuevo lanzamiento cada año aproximadamente.GMP está distribuida bajo la licencia GNU LGPL. Esta licencia hace que la librería sea libre de usar, compartir, y mejorar además te permite  transmitir el resultado. La licencia da libertades, pero también establece restricciones firmes en el uso de programas no libres.

GMP es parte del proyecto GNU. Para más información sobre el proyecto GNU, por favor echa un vistazo al sitio web oficial de GNU.El objetivo principal de GMP son sistemas de tipo Unix, como GNU/Linux, Solaris, HP-UX, Mac Os X/Darwin, BSD, AIX, etc. Además se sabe que funciona en Windows en los modos de 32 bits y de 64 bits.

Categorías de  funciones de GMP

Hay varias categorías de funciones en GMP:

  • Funciones de alto nivel para aritmética de enteros con signo (mpz). Hay aproximadamente 140 funciones lógicas y aritméticas en esta categoría.

  • Funciones de alto nivel para aritmética de números racionales (mpq). Esta categoría consiste en 35 funciones, pero todas las funciones de la aritmética de enteros con signo pueden ser usadas también, aplicándolas al numerador y al denominador por separado.

  • Funciones de alto nivel para aritmética de números de punto flotante (mpf). Esta es la categoría de función de GMP que hay que usar si el tipo de C "double" no da la suficiente precisión para una aplicación. Hay aproximadamente 65 funciones en esta categoría.

  • Clases de C++ basadas en todo lo anterior. (Las funciones y los tipos de C pueden por supuesto ser usados directamente ser usados desde C++ también.)

  • Enteros positivos de bajo nivel, difíciles de usar, muchas funciones generales de bajo nivel las encontrarás en la categoría mpn. No se lleva a cabo la gestión de la memoria; la persona que llama debe asegurarse de proporcionar suficiente para los resultados. El conjunto de funciones no es siempre regular, ni tiene interfaz de llamada. Estas funciones aceptan argumentos de entrada formando parejas que consisten en un puntero a la palabra(WORD) menos significante, y un tamaño integrado que dice cuántos limbs(=words) hay en el argumento. Las funciones en las otras categorías llaman a mpn para casi todos sus cálculos

  • Soportadas externamente: funciones aritméticas de redondeo con precisión de alto nivel (mpfr). Echa un vistazo al sitio de mpfr para más información. A partir de las GMP 4.2, mpfr se libera por separado de GMP. (Los nuevos proyectos deben considerar usar mpfr en lugar del mpf del propio GMP.)

Compilando


Bueno después de todo este mamotreto vamos al lío. Para este tutorial se utilizará:

  • Windows 8 de 64 bits.(Podeis usar otro windows).
  • El compilador MinGW en su última versión de 32 bits(con el MSYS, el compilador de C, el de C++ y el MinGW Developer ToolKit).Quedándonos el setup del compilador antes de darle a instalar así:
  • El código fuente de la versión 5.1.0 de la librería.

Además de todo eso creo que no hace falta decir que el compilador debe estar puesto en la variable path etc...

Comencemos pues, nos bajamos el código fuente de GMP desde su página principal No tienes permitido ver los links. Registrarse o Entrar a mi cuenta:


Lo guardamos y lo descomprimimos. Lo mejor es dejar el código fuente en C:\ para compilarlo, así el compilador no se lía y no tenemos que andar con errores inesperados.Bien ahora vamos y ejecutamos MSYS desde el menú de inicio o desde la propia carpeta(si tienes Windows 8 haz esto), la cual es en cuestión:

C:\MinGW\msys\1.0

Y ejecutamos el archivo msys.bat (Archivo por lotes ejecutable), y nos saldrá una consola negra parecida al cmd de Windows.En esta consola tecleamos(cd "C:\gmp-5.1.0\gmp-5.1.0").Después de tipear eso le damos al intro y estaremos en la carpeta del código fuente:

Después de eso tipeamos: ./configure --prefix=${gmp_install}
Cuando termine veremos esto:

Ahora tipeamos: make (esto lleva algo de tiempo)
Terminará así(sin lo ultimo que pone make install):

Cuando finalize tipeamos: make install (como está en la imagen de arriba)
Ya una vez terminado este ultimo proceso veremos esto:


Ahora cerramos la consola y creamos una carpeta en cualquier otro lado y nos vamos a C:\gmp-5.1.0\gmp-5.1.0.Una vez ahí copiamos los siguientes archivos a la otra carpeta que creamos:

  • gmp.h
  • gmp-impl.h
  • gmp-mparam.h
  • gmpxx.h
  • config.h
  • fib_table.h

Después nos vamos a la carpeta .libs que estaba dentro de la anterior cuya dirección es esta: C:\gmp-5.1.0\gmp-5.1.0\.libs y copiamos este archvo a la carpeta donde copiamos los anteriores:
  • libgmp.a

¡Y ya está listo! Ahora puedes incluir el archivo de cabecera gmp.h y empezar a leer el manual para poder hacer algo útil, al compilar tienes que enlazar con la librería libgmp.a


¡Saludos otro día explicaré un poquito de GMP!

PD: no se enfadeis los de linux , dentro de poco intentaré hacer un tuto para ubuntu.
Regístrate en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Excelente aporte! Muchisimas gracias bro!


De nada ANTRAX , a ver si cuando pueda pongo un programilla compilado con esto , para que vean el potencial de esta librería.

¡Un saludo!
Regístrate en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Excelente aporte avesudra, me gusta tu manera de redactar. Un saludo ;)
Twitter: @The_Pr0ph3t
[email protected]

Ya ves esta currado podrías hacer tutoriales guappos avanzados xD
Tengo algo muy gordo entre manos!

Gracias a los dos, sr.mcbecker ¿avanzados?a que te refieres  :o no soy Dennis Ritchie  :-\ . Pr0ph3t la de redactar  ;D me sorpendeis la verdad, la de redactar no se, lo que he escrito es sólo la parte de compilando hacia abajo, lo de que es gmp y eso es traducido de la pagina oficial.
Regístrate en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta