不同的系统对硬件做了不同的抽象。因此实现的机制也有非常大的区别。
系统拥有硬件的控制权,其它人在通过系统调用时,会接受系统的审查。库也是高层的东西,底层是信赖系统的。所以在一般的意义下根本没法移植。
抽象的讲移植,其实讲的是移植接口。目的基本上是使得在不同的系统下,有一个同名的函数有同样的功能。这样,应用程序就可以忽略环境而使用那个函数。
技术上讲,基本是在不同系统下实现同名函数,使之拥有指定的功能。
实践指出,移植软件的唯一方法是移植系统。
只不过这个唯一正确的出路,往往受到很大的阻力(想想很容易明白,因为公司开发软件并不是为了开发出真正好的软件,而是开发出真正赚钱的软件)。
POSIX 标准试图给出一个可移植系统的全部接口。并在一定程度上取得了一定的成就。
以上也是个人愚见。