These are terminologies from computer security. In the past it was fixed address (< 1996, according to LKML, but it is only recently that executeable began to be compiled as relocatable, in order to implement ASLR. (But much longer ago, all libraries have been compiled as relocatable, so that libraries can be reloaded into different addresses if necessary - read dynamic relocation but due to order of loading, those main syscall API is normally loaded into fixed address.) Even today,
doing a gdb /bin/ls and following by "run", u will discover that default address is not change:
(gdb) disassemble __open
Dump of assembler code for function open:
0xb7f017f0 <+0>: cmpl $0x0,%gs:0xc
0xb7f017f8 <+8>: jne 0xb7f0181c
Anyway, ASLR originate with PaX - read the wiki, it covered a lot on the requirements of implementing ASLR.
Why ASLR? To prevent 2 types of attack: http://en.wikipedia.org/wiki/Return-to-libc_attack and http://en.wikipedia.org/wiki/Return-oriented_programming, because both attack assumed your code area if fixed in memory.