这个问题问得好。
首先,知道为什么linux社区一般都喜欢源码分发吗?就是因为你这几个问题的答案都是:“不(一定)兼容”。
然后,为什么linux社区搞了那么多的发行版,还一般要宣称是“xx系/yy系”的吗?原因是在同一个“系”里面,一般还是后向兼容的——当然,这个并没有严格保证,而且没记错的话,似乎历史上也出现过这样的例子?
最后,一般来说,这种版本间ABI的兼容性,C++可以默认认为比C要更差一个级别——当然,其实也不一定,但谁叫C++不搞自己的ABI规范呢?(实话说,C也没搞,但人家C背靠os这棵大树啊,你C++孤苦伶仃的,也好意思跟人比?)