From: "Carolyn Kelly-Pajot" References: <63ul58$ars$1 AT news DOT sas DOT ab DOT ca> Subject: Re: Newbie question, everyone should know this I don't. Date: Fri, 7 Nov 1997 16:48:34 -0500 Lines: 31 Message-ID: Newsgroups: comp.os.msdos.djgpp To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk steven AT freenet DOT edmonton DOT ab DOT ca wrote in message <63ul58$ars$1 AT news DOT sas DOT ab DOT ca>... >What's the difference between linking and compiling? I know what compiling >is... but linking is uncharted territory for myself. > >--------------+ >Windows 95: n.| > 32 bit extensions and a graphical shell for a 16 bit patch to an > 8 bit operating system originally coded for a 4 bit microprocessor, > written by a 2 bit company, that can't stand 1 bit of competition. There are 4 programs run when converting a .C file to .EXE: Preprocessor - CPP.EXE replaces #includes with the actual file, #defines with the actual definition, etc. Also remove comments. File is stored in temp directory. Compiler - CC1(PLUS, OBJ).EXE converts output from CPP to assembly. CC1 is C, CC1plus is C++, CC1OBJ is objective C. Assembler - AS.EXE converts output of CC1(*) or your own assembly files to computer code. It is ready to be used, but not an EXE file. GCC stops here if you tell it -c. Linker - LD.EXE combines multiple .O files and libraries to have a file ready to be run by GO32.EXE. The compiler is the first 3. The linker combines multiple files, and links the calls (ie functions) to the actual functions. Oh yea,STUBIFY.EXE writes 2 kb to the start of the linkers output to make a full .EXE file.