I have learned from reading many sources and by re-implementing the function and studying the matrices myself, that gluLookAt() is equivalent to a rotation followed by a translation to the inverse eye coordinate. The implementation is similar in OpenGL, MESA, Cogl etc... and a good summary is here: http://pic.dhe.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.opengl/doc/openglrf/gluLookAt.htm
However, consider the case where the look-at target is at the origin i.e. (0, 0, 0), and the virtual camera is slightly offset from the Z-axis e.g. (2, 2, 10). The outcome of gluLookAt() should have the origin in the center of the field of view. The initial rotation step is of no consequence, but the later translation step moves the origin away from the center!
Can you explain my gluLookAt() misconception?