Cita:
Iniciado por ArrauKano En Linux existe desde la génesis del sistema la idea de evitar que las cosas se dupliquen/reinventen. Por eso mismo existen muchas librerías comunes al sistema.
En cambio en windows, si te haz fijado, cada programa es un mundo a parte, a veces es posible que los programas usen librerías comunes de C:\windows\system32, pero en general no es tan así.
¿Que? ¿Desde cuando existen las DLLs en Windows?
Todas las aplicaciones para Windows usan DLLs.
Cita:
Iniciado por ArrauKano Resumen:
- En Linux, todas las llamadas al sistema, y cosas comunes están bien distribuidas en el sistema, así que al compilar no es necesario reincoorporar todo ese código en los ejecutables.
En Windows las llamadas al sistema estan todas en DLLs y estas DLLs no se incorporan
JAMAS al ejecutable, son enlazadas estatica o dinamicamente.
Cita:
Iniciado por ArrauKano - En Windows: Es necesario incluir código extra, ya que nadie te asegura que el usuario tiene tal o cual librería "de terceros" y en que versión, por lo tanto se prefiere incluir versiones estáticas (en algunos casos) para evitar incompatibilidades. Finalmente esta es una de las causas de porque el sistema se ve tan abultado de tamaño cuando instalas muchos programas.
¿Como cual codigo extra? Si yo compilo en release con el VC++ genero un ejecutable de por ejemplo 36KB. La CRT ocupa bastante pero no cientos de KBs ni mucho menos, las versiones estaticas son justamente de la CRT, facilmente reemplazable por la version en DLL (msvcrt.dll por ejemplo, depende del compilador). De ser necesario usando las opciones del compilador y el enlazador es posible generar ejecutables de 1024 bytes.
Eso de las librerias de terceros, que tampoco me lo creo mucho, no explica para nada el problema planteado.