Xref: news2.mv.net comp.os.msdos.djgpp:7103 From: "John M. Aldrich" Newsgroups: comp.os.msdos.djgpp Subject: Re: DJGPP's .exe's are TOO large Date: Sun, 11 Aug 1996 11:55:25 -0700 Organization: Three pounds of chaos and a pinch of salt Lines: 56 Message-ID: <320E2C9D.6E63@cs.com> References: <4uk6qr$795 AT utdallas DOT edu> NNTP-Posting-Host: ppp204.cs.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: lafitte AT utdallas DOT edu DJ-Gateway: from newsgroup comp.os.msdos.djgpp lafitte AT utdallas DOT edu wrote: > > The program : > main() { > > } > compiles to something like 30 or 40k! What gives. If you then use just > a couple library functions your code size goes up to around 50 or 60k. > Am I setting the program up wrong or what? Do the programs really need > that huge "library chunk" of data to run? I can put up with the slow > compile time, but I make up a lot of little apps, and it just seems that > they're taking up a heck of a lot more disk space then they need be. > Just wondering... Please mail replies to lafitte AT utdallas DOT edu > > Rei What you are seeing is the startup code for DJGPP v2 which includes support for, among other things, command-line globbing, environment loading, and FPU emulation, not to mention the DPMI loader. Also, if you compile without -s, your program includes symbol information used in debugging. Section 8.15 of the FAQ (available as v2/faq201b.zip from any SimTel mirror) gives a detailed description of this and also gives instructions on how to reduce the size of your executables (to as little as 18K for a "Hello World"). Please also note that, as has been discussed before, "Hello World" is NOT a realistic test case to determine the size of a program. The startup code is a fixed size, and while it does bloat small programs, it is a trivial part of large ones. In general, DJGPP code compiles smaller and faster than almost any other 32-bit compiler. FYI, here's a brief summary of the instructions in the FAQ. To reduce the final size of a DJGPP compiled program, you can do any or all of the following: 1) Compile your code with -s to strip debugging information. Alternatively, run 'strip' on your compiled object code, then relink. 2) #include in your program and define empty versions of any or all of the functions __crt0_glob_function, __crt0_setup_arguments, and __crt0_load_environment_file. Note that this will DISABLE the corresponding functionality from your program. 3) Compress your executables with DJP, the DJGPP executable packer. Pointers to it are in the FAQ. HTH! -- John M. Aldrich, aka Fighteer I -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS d- s+:- a-->? c++>$ U@>++$ p>+ L>++ E>+ W+>++ N++ o+ K? w(---) O- M-- V? PS+ PE Y+ PGP- t+(-) 5- X- R+ tv+() b+++ DI++ D++ G e(*)>++++ h!() !r !y+() ------END GEEK CODE BLOCK------