Stránka 1 z 1

Obrovské EXE

Odeslat příspěvekNapsal: 14. 11. 2017 22:27
od xmms
Proč se v Dev-C++ generuje exe megabajt a víc u prázdného programu? Visual studio to zkompiluje na cca 9kb, i to mi přijde zbytečně moc, ale budiž. Každopádně 1,3MB je opravdu moc. Bez toho iostream to má 100kB, ale to je k ničemu a je to pořád hodně. Dá se to v tom Dev-C++ udělat líp?

Zkoušel jsem třeba v code blocks vyrobit jednoduchou wxWidgets aplikaci, ale bez nainstalovaných knihoven se nedá spustit a nalinkovat je tam staticky znamená udělat 7MB velkou aplikaci, která se umí spustit a ukončit.

Třeba by se tam dal zkompilovat jen ten kód, který se aktivně využije?

Můj tajný program:

Kód: Vybrat vše
#include <iostream>
int main(int argc, char** argv) {
   return 0;
}

Re: Obrovské EXE

Odeslat příspěvekNapsal: 14. 11. 2017 22:44
od satikcz
Vždycky si musíš vybrat, jestli chceš knihovny linkovat do exáče nebo volat dynamicky - pak je exáč menší, ale pak musejí být někde dosažitelné, jinak aplikaci nespustíš :) .
Taky je možnost žádné knihovny nepoužít.

Re: Obrovské EXE

Odeslat příspěvekNapsal: 14. 11. 2017 23:18
od xmms
No ale v tomhle případě dev-c++ dělá megabajt a MS dělá 9kB. Někde je něco špatně.

Re: Obrovské EXE

Odeslat příspěvekNapsal: 15. 11. 2017 00:11
od satikcz
Se podívej, jak to máš nastavený, je možný, že MS používá nějaké knihovny z Win, zatímco devcpp si je linkuje staticky, netuším, devcpp nepoužívám.

V nastavení linkeru/kompilátoru je toho spousta, co se dá změnit.

Jinak řešit MB sem, MB tam nemá moc smysl, pokud nemáš nějaký rozumný důvod, proč to musí být tak malé.

Re: Obrovské EXE

Odeslat příspěvekNapsal: 15. 11. 2017 01:23
od suk
Doporucuju pro zacatek diagnostikovat, co se vubec deje, tedy rozebrat exac nejakym PE viewerem a mrknout se, co tam vlastne teda jako je ;)

a btw, trosku mimo tema, neb je to ELF, ale spis jako zajimavost :) http://www.muppetlabs.com/~breadbox/sof ... eensy.html

Re: Obrovské EXE

Odeslat příspěvekNapsal: 30. 11. 2017 00:42
od xmms
To udělám v C++. Jen se mi nedaří úplně vypnout optimalizaci kódu v GNU GCC compileru v Code Blocks, přklad:

string k = "mujtext";
string ka = "mujtext";
string kb = "mujtext";
string kc = "mujtext1";

V tom exe je ten mujtext vidět jen jednou a k tomu jeden mujtext1. Zkoušel jsem parametr -O0 a furt nic. Ve visual studiu se dá nastavit optimalizace na Disabled (/Od) a pak to funguje a ten text je fyzicky v tom exe 3krát.

Poraďte, jak to nastavit v tom GNU GCC. Potřebuju tam naházet hromadu kódu, aby tam opravdu byl. Nejen stringy, ale i funkce a všechno.

Re: Obrovské EXE

Odeslat příspěvekNapsal: 30. 11. 2017 11:06
od soban
Však se to chová správně proč by se řetězec co se nemůže měnit tam měl být 3x ????

Jinak koukni zda se ti tam někde nepřídává ten parametr -O někde později.