I read that it's possible to attach multiple shaders to the same stage of a program in OpenGL, to create "libraries" of helper functions. I tried this and it worked well on my machine. However, the OpenGL Wiki warns
That being said, while this power is available, it is best not to use it. It usually works, but because most OpenGL applications don't do this, it doesn't get as thoroughly tested as other parts of the OpenGL API. So you're likely to run into more driver bugs this way. Generally stick to having one shader object per shader stage.
This section was written in 2013. Is this still true for reasonably modern hardware/drivers?