X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f From: "Pierre Laroche" Newsgroups: comp.os.msdos.djgpp Subject: Re: Creating small-sized EXE Date: 20 Apr 2002 18:02:48 GMT Organization: Concentric Internet Services Lines: 99 Message-ID: References: NNTP-Posting-Host: 64.1.213.19 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Try using the strip utility to reduce the exe size further. - Pierre "Goh, Yong Kwang" wrote in message news:a9eqki$9s9$1 AT violet DOT singnet DOT com DOT sg... > I've noticed that the simple program that I write when compiled are way much > larger than other people's program with similar capabilities and function, > possibly compiled with other C compiler. For example, for a simple Hello > World program, > > #include > > main(){ > printf("Hello World\n"); > return 0; > } > > when compiled using DJGPP gcc, comes up to about 80KB. When checking out the > binary utilities supplied with DJGPP, I come across merge.exe and split.exe. > Both took up only about 30KB each. As a test I wrote a C program (I simply > call it FileJoin) to do the same thing as merge.exe (with slight differences > in the way parameters are arranged) and it ends up as a 80KB EXE, more than > 2x the size of merge.exe! Notice the difference? 2 programs with almost > similar capabilities but with a huge difference in size? Why so? A quick > check of the djgpp/bin and /windows/command directory throws up lots of > programs which do more useful things and with a lot more sophistication than > my humble HelloWorld or FileJoin program and many of them are still smaller > in size. I'm sure you would agree that XCOPY.EXE (30KB), CWSDPMI.EXE (20KB), > GO32-V2.EXE (62KB) all does sophisticated stuffs and they're still small in > size. Size does matter ;) after all and I'm always impressed by small and > nimble command-line programs that load fast and do their work fast, instead > of showing me eye-candies like full color icons, transparent buttons, > animated windows with drop shadows or a bother-some agent with speech > synthesis offering "help" in the corner. Looks fun at first, but you get > weary after an hour or so. > > A lot of people argues that the overhead (standard library routines plus the > stub) is of little concern as disk space is cheap nowadays with 40GB hard > disks and as the program gets bigger, the proportion of the starting > overhead to the actual program code is minimal, so what's a few KB? However, > I'm still concern that a simple program doing a simple task should not be > unnecessarily big -- the size has to be in proportion to what a program can > accomplish. IMHO, I consider anything that uses up more computing resources > than what it *should* require a bloatware. Why would we need 80KB just to > print only "Hello World" on the screen? Yes disk space and memory is cheap > but not free or infinite. I just want to cultivate the habit of writing > compact and speedy code instead of hogging unnecessary resources. 1 or 2 > bloatware programs are probably fine but consider this for DOS > Terminate-Stay-Residents, Unix daemon processes or Windows services, with > probably a hundred of them residing in memory in the background and forking > out more processes as they're activated, the computer will be struggling > under all these over-sized programs and we take a performance hit. Just my > opinion. Please don't flame or "attack" me. > > I wonder if the problem lies with my program design or programming style? Or > is it that I've not instructed gcc via some switches, which apparently I'm > not aware of, to do code optimization for generation of compact code, > leading gcc to include some debugging info in the EXE? > > And any tips to reduce EXE size to the minimum, for example, by not linking > in unused routines/libraries etc and by changing program design etc? And is > it time I should start learning x86 assembly language programming instead of > mucking around in C/C++ :=)? > > Thanks. > -- > Yong-Kwang Goh > Singapore > gohyongkwang AT hotmail DOT com > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.344 / Virus Database: 191 - Release Date: 4/2/02 > >