C++ 的一些语言特性使之必须由编译器和链接器共同支持才能完成工作。最主要的有两个方面,一个是C++ 的重复代码消除,还有一个就是全局构造与析构。...另外由于C++ 语言的各种特性,比如虚拟函数、函数重载、继承、异常等,使得它背后的数据结构异常复杂这些数据结构往往在不同的编译器和链接器之间相互不能通用,使得C++ 程序的二进制兼容性成了一个很大的问题...Linux系统下一般程序的入口是“ start”,这个函数是 Linux系统库( Glibc)的一部分。...比如有两台机器,一台是 Intel x86,另外一台是MPs的,它们都安装了Lnux系统,由于Linux支持POSIX标准,所以它们的C运行库都应该有 printf函数。...早先时候,*NIX系统下的ABI也十分混乱,这个情况一直延续到LSB( Linux Standard base)和 Intel I的 Itanium C++ABI标准出来后才有所改善,但并未彻底解决ABI