[C con Clase] ¿Alguien sabe destripar librerías...?

Héctor Francisco Hernández hectorfh en gmail.com
Vie Ago 29 23:40:21 CEST 2008


Hola xonly:

Sí, veo tu código en C++ y ya lo probé en Windorch hace algunos años,
recuerdo que también ocupaba algo así el ejecutable. Sin embargo en
otros sistemas, como GNU/Linux ocupa unos pocos KBs.

Esto se deba probablemente a que en GNU las funciones de "streams"
(cout, cin, etc) están en el sistema y en windorch no, por lo tanto es
necesario meterlas en tu ejecutable, aumentando así el tamaño en
extremo.

El punto es que no importa cuantas funciones use tu programa, sino si
las funciones están en tu ejecutable o están en el entorno donde corre
tu ejecutable.

Ahora bien, si distribuyes un programa que hace uso de funciones que
deberían encontrarse en el entorno de ejecución, tienes el problema de
que el usuario que adquiere tu programa no tenga dichas funciones en
su sistema. Por lo que deberá tener que instalarlas, lo cual puede
llegar a ser muy molesto.

Me ha pasado muchas veces el bajar programas para GNU/Linux y a la
hora de instalarlos resulta que necesitaba bajar 10 bibliotecas
inusuales más.

Este tipo de problemas se conoce en inglés como problemas de "deploy".
Si haces aplicaciones en C son muy frecuentes.

Por eso algunas plataformas de desarrollo como Java o Python, tienen
el concepto de "battery included" (baterías incluídas). Estos
lenguajes se basan en que el usuario para correr el programa debe
tener instalado el "entorno de ejecución Java o Python", los cuales
pesan varias decenas de megas. Esto es porque los entornos de
ejecución ya te viene con miles de funciones ya hechas listas para
usar, y tu programa solo pesa algunos KB. Por ejemplo un "Hola mundo"
es Python no llega a pesar ni 100 bytes!!! Claro, como es interpretado
consume miles de ciclos de máquina más que su similar en C.

Con esto surge otra conclusión, obtener programas más pequeños no
significa que utilicen necesariamente menos recursos de CPU.

Espero haberte aclarado el misterio del ejecutable de medio mega.

Saludos




Más información sobre la lista de distribución Cconclase