Apart from generic tools noted below, many applications require specific libraries to build. E.g. applications providing a graphical user interface may need a widget library like gtk+. You will need to install such items before you can compile the application.
Some Linux distributions split packages into "runtime" and "devel" parts, e.g. gtk and gtk-devel. In that case, if you want to compile an application that requires e.g. gtk, you will need gtk-devel as well.
There are a (small) number of tools that you will most probably need to compile an application from source. You should check whether you have them already installed, otherwise, this is the time to search for your distribution CD.
tar, gzip — You will need those to unpack source packages in .tar.gz or .tgz format. Other formats may require rpm (for source rpm packages), or unzip (for .zip packages, mostly used on Windows).
gcc — The GNU Compiler Collection (of course other compilers might do as well). gcc supports several of the most popular languages (C, C++, Fortran, and Objective C).
make — Almost every source package uses make to build the application.
libtool — Required if an application wants to build a shared library.
bison (or yacc), flex (or lex) — Some applications require them (not very many, indeed).