Some answer you can find here. That covers also the run-time managed sections heap and stack (that was the original answer).
In short (an extended):
.bss
is for uninitialized variables declared static
and with global scope. This is not actually stored in the file, but just reserved and cleared at run-time right before `main() is called.
.data
contains explicitly initialized variables.
.const
contains const
declared objects.
.text
is where the program code is stored. Note that is not the source code, but the compiled program code!
There is also a plethora of other sections in normal "ELF" object files which contain debugging information, etc.
For more information, read about object file formats. One of the most widely used is ELF.