Compiling source code you don't comprehend and aren't capable of rewriting isn't really an exercise of freedom. You could just as well distribute a closed binary with runtime configuration options, for all it matters in that case.
to put a finer point on it, the concept of "layers of abstraction" is fundamental to computers and software. i can know quite a bit about adjusting the pieces of a program without having the ability to build it as effectively as i modify it.