总是困惑我的一件事是:当软件以二进制forms分发时,供应商有时会提供几个用不同版本的GCC编译的二进制文件。 我以Opera浏览器为例,但是我记得其他软件厂商也是这样做的。
Opera为浏览器提供了几个版本( http://snapshot.opera.com/unix/10.0-Alpha-1/intel-linux/ ):
为什么说GCC版本? 我想这与依赖pipe理无关,不像包装(RPM或DEB)或Qt版本。
在这种情况下,这是因为QT是使用C ++构build的,最近的一些GCC版本已经打破了C ++ ABI,这就是为什么您需要与您的系统具有相同ABI的版本。
通常,商业应用程序在可能的情况下是静态链接的,因为依赖于系统库(libc可能是个例外)是充满危险的。
Debian最后一次改变C ++ ABI的一些细节可以在下面看到: