Linux系统调用和API是否依赖于Linux发行版?

时间:2015-10-25 18:05:17

标签: linux

  • Linux系统调用
  • Linux API

依赖

  • Linux发行版(例如Debian,Fedora,Ubuntu,Arch,Gentoo,...)和/或
  • Linux内核?

3 个答案:

答案 0 :(得分:3)

要回答有关Linux系统调用的问题,您需要阅读man syscalls

所以是的,使用不同的发行版,Linux内核将会改变,因此可用系统调用。

Linux API是什么意思?

  • Linux内核的内部API
  • 或C ABI

答案 1 :(得分:2)

答案取决于它是否符合POSIX标准并且您使用的是POSIX兼容系统。

如果您使用POSIX调用它们,那么您提到的系统将以相同的方式支持和工作,因为它是一个严格遵循它们的明确定义的标准。

存在许多特定于某些系统的系统调用,如果您使用此类系统调用或API,则您的代码存在风险,因为很可能在其他系统上可用或不可用。< / p>

更多关于POSIX here.

答案 2 :(得分:2)

回答第一部分,答案是yes和no,yes部分,Linux的所有发行版,它们的核心,内核来自主repository树。

没有任何一点,就是内核2.x,内核3.x,内核4.x之间存在巨大差异,因此管理系统各方面的API的底层实现,例如设备驱动程序,例如,是不同的。例如,依赖于内核v3.x实现的内核模块将无法在Kernel v2.x下运行。

尽管如此,可以说不同的实现可以向后移植到旧版本的内核。

但是,系统调用是相对静态的并且没有太大变化。 (见SysCalls

另一方面,

分发包含内核和所有库,特别是GNU C库,如果适用的话,可以重新编译它们。

如果这些运行时库背后的API没有改变,那么针对某个版本的库的代码可以针对它们的较新版本的运行时库进行重新编译。