After a little while of programming experience, I find myself still not clear about some basic:
1. if I build from my code an executable with static linking, will that executable be portable to another machine with same OS? How about from 32bit to 64bit hardware (or OS) or the other way around? I really have done successfully from 32 bit Ubuntu to 64bit Unix.
2. if I build from a C++ library' s source code its library files(.a and/or .so), are those .a and .so files portable to another system with same OS?
3. if the answers are no in general, why are so many softwares and libraries have precomplied distributions besides source distribution? Is "binary distribution" the same thing as "precompiled distribution"