pues no entiendo como haciendo un program tan pequeño como es:
#include <iostream>
using namespace std;
int multiply(int); //function to multiply a number by 10
int main(int argc, char * argv)
{
int num;
cout << "Enter a number to see it multiplied by 10: ";
cin >> num;
cout << "\n" << num << " * 10 = " << multiply(num) << endl;
}
int multiply(int n)
{
return n*10;
}
puede salirme un exe de 284kb y en total la carpeta del "proyecto" me ocupe 2.92mb!! he visto q lo q ocupa bastante es el archivo .pdb q pone q es Program Debug Database. Cómo puede ser que esa chorrada ocupe tanto? Vamos, que si haces un programa con más líneas se te va a los 10mb o cómo va eso?
El compilador es el de visual studio .net 2003.
gracias.
el pdb es parte del proyecto pero no del producto final, en este proyecto por lo que veo solo importa el exe y me imagino que te ocupara tanto por que abras linkado estaticamente alguna dll
Habrás compilado en modo DEBUG :P
Pues via g++...
Sin informacion DEBUG
Citar-rwxr-xr-x 1 victor victor 4680 2005-03-15 17:18 a.out
y con DEBUG
Citar-rwxr-xr-x 1 victor victor 14080 2005-03-15 17:19 a.out
Imagino que estas usando VC++. Recomiendo a cualquier programador que use compiladores Microsoft que tire las STL que traen por defecto a la basura (pues la basura en el mejor sitio que esta es en el cubo de la basura) y use alternativas (por ejemplo STLPort).
Ademas si tanto importa el tamaño optimiza el compilador por tamaño:
A ver a ver.... g++ -Os kk.cpp
Otia pero si ocupa mas (ole)
Citar-rwxr-xr-x 1 victor victor 4696 2005-03-15 17:21 a.out
A partir de VS 7.1 la STL se cambió completamente y es bastante buena la que hay ahora. La del 6 ciertamente es una basura.
tamaño de las carpetas con todos los archivos:
mode debug - 2,92mb
mode release - 1,13mb
seguiré mirando luego pa ver si quitándole más cosillas a la hora de compilar baja el tema. Aunque al menos el exe ahora ocupa 100kb.
Prueba a quitar las "precompiled headers". No me acuerdo donde estaba, pero creo que por lo de code generation y tal.
Seguramente sea esto lo que te hace tener un proyecto tan grande.
Ten en cuenta que esas cosas hacen que el tiempo de compilación sea menor (compilación incremental). Realmente no sé por qué tanta preocupación porque la carpeta de salida te ocupe tanto. Lo que cuenta es el ejecutable.
Saludos.
Si te preocupa el tamaño del ejecutable, quita las librerias por defecto, añade solo las que uses, y finalmente, usa
UPX en el ejecutable final. Y no deberias preocuparte tanto por los archivos intermedios, sobretodo en la version debug, donde acostumbran a ser gigantescos.
es que incluso incluyendo librerias que no se usen el .net las elimina del ejecutable final, en propiedades del proyecto si revilas un poco veras esto o al acabar de compilar veras que te indica en la ventana de proceso los "discards dll", tambien en las propiedades del proyecto tienes opciones para optimizar para tamaño o velocidad, etc
yo creo que estas confundiendo el proyecto con .net y el producto final que sale, el proyecto con .net siempre ocupara megas o incluso gigas, pero el ejecutable o producto final que nos indicas no tiene ni que llegar a los 100kb
saludos
Con el VC++ Toolkit 2003 me ocupa 106.496 con un simple:
cl prueba.cpp
Si optimizo, le quito RTTI y excepciones, se queda en 102.400:
cl prueba.cpp /O2 /GR- /GX-
Ejem...
con algunas opciones consigues tener un ejecutable de 4kb y sin usar ningún tipo de compresor, sólamente tocando las opciones del vc7.1
C:\temp\1>cl /O1 /MD 1.cpp > basura
Compilador de optimización versión 13.10.3077 para 80x86 de Microsoft (R) C/C++
de 32 bits
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
C:\temp\1>dir 1.exe
El volumen de la unidad C es 25-06-51
El número de serie del volumen es: AC24-DA18
Directorio de C:\temp\1
16/03/2005 22:16 4.096 1.exe
1 archivos 4.096 bytes
0 dirs 69.596.086.272 bytes libres
:P
No creo que eso le guste, porque estas linkando contra la DLL runtime de C++. No se como se llamará la DLL porque el toolkit no soporta /MD (mas bien que le falta msvcprt.lib).
¿ Con que versiones de windows viene la DLL ?