What the above said about compilers are all true. Basically, it takes a chunk of source code, and compiles it into a single program that can be run independently. Some compilers take multiple chunks of source code stored as different files, and compiles it together into a single program. You could also compile a program that links to other compiled programs. Windows for example uses DLLs (Dynamic Link Libraries) which are actually collections of smaller programs.
Compilers are the 2nd generation in computing in that, prior to compilers, programs were run using Interpretors. Interpretors would read the source code a line at a time and execute that line of code in real-time. This required that Interpretors were running at the same time as the actual program, which is not a very efficient way to do things.
When Compilers came along, they enabled programs to be run independently without the need of another program (ie the Interpretor) to translate source code into eg. a user-friendly interface.