/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
g++ og debug-information (omdiregeret hert~
Fra : Jacob Jensen


Dato : 16-04-05 00:42

Hej gruppe

Jeg er blevet gjort opmærksom på at dette er den rigtige gruppe frem for den
mere generelle dk.edb.programmering.

Jeg sidder og koder på den teksteditor jeg startede et indlæg om for et par
dage siden, og jeg kan ikke huske hvordan det er man vælger debug-info fra,
ved oversættelse med g++. Jeg bruger MinGW's oversætter, og min lille
halvfærdige teksteditor fylder over 200kB selvom jeg kører strip på den.

Hvad gør jeg?

Jacob




 
 
Kent Friis (16-04-2005)
Kommentar
Fra : Kent Friis


Dato : 16-04-05 08:49

Den Sat, 16 Apr 2005 01:42:12 +0200 skrev Jacob Jensen:
> Hej gruppe
>
> Jeg er blevet gjort opmærksom på at dette er den rigtige gruppe frem for den
> mere generelle dk.edb.programmering.
>
> Jeg sidder og koder på den teksteditor jeg startede et indlæg om for et par
> dage siden, og jeg kan ikke huske hvordan det er man vælger debug-info fra,
> ved oversættelse med g++. Jeg bruger MinGW's oversætter, og min lille
> halvfærdige teksteditor fylder over 200kB selvom jeg kører strip på den.

Mig bekend fjerner strip også debug informationer.

Mvh
Kent
--
Hard work may pay off in the long run, but lazyness pays off right now.

Michael Rasmussen (16-04-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 16-04-05 09:25

On Sat, 16 Apr 2005 01:42:12 +0200, Jacob Jensen wrote:

>
> Hvad gør jeg?
Mig bekendt er debug info noget man tilvælger med option -g
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 10:06

> Mig bekendt er debug info noget man tilvælger med option -g

Ja det mente jeg også først (og andre har sagt det samme), men jeg kan huske
jeg har haft dette problem før.

Et lille hello world program jeg lige lavede nu, fylder 408 kB før strip og
209 efter strip. Begge er da lige i overkanten.

#include <iostream>
using namespace std;
int main() { cout << "hello" << endl; return 0; }

Jacob



Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 10:15

> Et lille hello world program jeg lige lavede nu, fylder 408 kB før strip
> og 209 efter strip. Begge er da lige i overkanten.

Det var så uden -g. Med -g fylder det 526 kB.

Jacob



Jesper Sørensen (16-04-2005)
Kommentar
Fra : Jesper Sørensen


Dato : 16-04-05 12:13

Jacob Jensen wrote:
>>Et lille hello world program jeg lige lavede nu, fylder 408 kB før strip
>>og 209 efter strip. Begge er da lige i overkanten.
>
>
> Det var så uden -g. Med -g fylder det 526 kB.
>
> Jacob
>
>
Nu ved jeg ikke hvilken compiler du anvender men der findes et par
tutorials på nettet der forklarer hvordan man kan reducere sin
filstørrelse.

http://msdn.microsoft.com/msdnmag/issues/01/01/hood/default.aspx

mvh
Jesper

Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 19:38

> Nu ved jeg ikke hvilken compiler du anvender...

Jeg bruger MinGW



Michael Rasmussen (16-04-2005)
Kommentar
Fra : Michael Rasmussen


Dato : 16-04-05 10:37

On Sat, 16 Apr 2005 11:05:55 +0200, Jacob Jensen wrote:

> Et lille hello world program jeg lige lavede nu, fylder 408 kB før strip
> og 209 efter strip. Begge er da lige i overkanten.
>
> #include <iostream>
> using namespace std;
> int main() { cout << "hello" << endl; return 0; }
>
Hos mig giver dit lille program følgende med/uden -g og/efter strip
loke:/tmp$ c++ /tmp/test.cpp -g -o test
loke:/tmp$ du -h test
120K test
loke:/tmp$ strip test
loke:/tmp$ du -h test
8,0K test
loke:/tmp$ c++ /tmp/test.cpp -o test
loke:/tmp$ du -h test
16K test
loke:/tmp$ strip test
loke:/tmp$ du -h test
8,0K test

Så der må altså være noget galt med din g++
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Troels Arvin (16-04-2005)
Kommentar
Fra : Troels Arvin


Dato : 16-04-05 13:54

On Sat, 16 Apr 2005 11:05:55 +0200, Jacob Jensen wrote:

> Et lille hello world program jeg lige lavede nu, fylder 408 kB før strip og
> 209 efter strip. Begge er da lige i overkanten.
>
> #include <iostream>
> using namespace std;
> int main() { cout << "hello" << endl; return 0; }

Med -Os og efterfølgende stripping får jeg en filstørrelse på 3836
bytes:

[troels@asus temp2]$ g++ -Os -o test test.cc && strip test && ls -l test
-rwxrwxr-x 1 troels troels 3836 Apr 16 14:50 test

En ldd på test viser mig, at den link'er fem libraries:

libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
/lib/ld-linux.so.2

Når du nu kører på Windows og får en noget større fil, er det mit
gæt, at MingW af en eller anden grund er nødt til statisk at link'e et
eller andet, som den gcc ikke er nødt til på Linux.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 19:42

> Når du nu kører på Windows og får en noget større fil, er det mit
> gæt, at MingW af en eller anden grund er nødt til statisk at link'e et
> eller andet, som den gcc ikke er nødt til på Linux.

Måske, men jeg er helt sikker på jeg for nogle måneder siden fandt ud af
hvorfor og at man skulle give en eller anden switch til g++.

Jacob



Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 20:05

> Måske, men jeg er helt sikker på jeg for nogle måneder siden fandt ud af
> hvorfor og at man skulle give en eller anden switch til g++.

På MinGW's hjemmeside står der under FAQ:

"Why is my C++ binary so large?

C++ programs using the Standard Template Library (ie/ #include <iostream>)
cause a large part of the library to be statically linked into the binary.
The need to statically link the stdc++ into the binary is two fold. First
MSVCRT.dll does not contain C++ stdlib constructs. Second the legal
implications of generating a libstdc++.dll are restricted by the licensing
associated with the library. If you wish to keep your file size down use
strip to remove debugging information and other verbatim found in the
binary.

strip --strip-all SOMEBINARY.exe "

Jeg bruger bare ikke iostream. Jeg bruger windows.h, string og sstream.

Jacob



Igor V. Rafienko (16-04-2005)
Kommentar
Fra : Igor V. Rafienko


Dato : 16-04-05 13:57

[ Jacob Jensen ]

[ ... ]

> Et lille hello world program jeg lige lavede nu, fylder 408 kB før
> strip og 209 efter strip. Begge er da lige i overkanten.


Hvorfor bryr du deg om dette?


> #include <iostream>
> using namespace std;
> int main() { cout << "hello" << endl; return 0; }


$ g++ -static -o a.out size.cpp && du -sk ./a.out
3306 ./a.out
$ g++ -static -o a.out size.cpp && strip ./a.out && du -sk ./a.out
993 ./a.out
$ g++ -shared -o a.out size.cpp && du -sk ./a.out
8 ./a.out
$ g++ -shared -o a.out size.cpp && strip ./a.out && du -sk ./a.out
5 ./a.out
$





ivr
--
"...but it's HDTV -- it's got a better resolution than the real world."
       -- Fry, "When aliens attack"

Jacob Jensen (16-04-2005)
Kommentar
Fra : Jacob Jensen


Dato : 16-04-05 19:41

> Hvorfor bryr du deg om dette?

Egentligt mest for interessens skyld når nu det drejer sig om så små filer,
men hvis jeg kan opnå en 10-15 gange mindre fil, gør jeg det da gerne.

Jacob



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste