Obrovské EXE

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod xmms 14. 11. 2017 22:27

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;
}
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 14. 11. 2017 22:44

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.
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod xmms 14. 11. 2017 23:18

No ale v tomhle případě dev-c++ dělá megabajt a MS dělá 9kB. Někde je něco špatně.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod satikcz 15. 11. 2017 00:11

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é.
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod suk 15. 11. 2017 01:23

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
Pokud nesouhlasíte s mým názorem, popřemýšlejte sami nad sebou. Opravdu si myslíte, že já bych se mohl mýlit?
----
You are an inspiration for a birth control...
suk
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod xmms 30. 11. 2017 00:42

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.
Vždycky bude někdo lepší než ty. A krysám se nikdy nevyrovnáš. Nikdy!
xmms
Junior
Uživatelský avatar

Odeslat příspěvekod soban 30. 11. 2017 11:06

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.
/----------------------------------------\
| Petr Šobáň |
| Olomouc |
\----------------------------------------/
soban
Pokročilý


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků