Even if it was my fault before, this time it isn't. OpenGL, at random, just decides to not compile shaders. Sometimes I need to run the program multiple times for them to compile. Jesus.
Turns out the Mesa implementation I'm using on my Linux system is a lot less lax than the nVidia implementation on my Windows battlestation. I've heard the ATI/AMD implementation is very very tricky.