Kernel32.dll的Linux等价物是什么?

时间:2009-06-12 19:10:04

标签: linux api operating-system

Linux是否有一个可以导出操作系统功能的共享库?

msvcrt.dll - > libc.so.6的

kernel32.dll - > ?

5 个答案:

答案 0 :(得分:7)

'kernel32.dll'也会转换为libc.so.6。由于Windows不是最低级别的POSIX,因此需要一个额外的层来将POSIX libc调用转换为本机Win32调用。这就是msvcrt.dll的用途。 Kernel32.dll包含最低级别的调用。在Linux上,那些系统调用已经是POSIX,因此不需要额外的库。

答案 1 :(得分:4)

msvcrt.dll与libc.so.6无法真正比​​较,因为第一个是VC ++的特定DLL(msvcrt - > MicroSoft Visual C ++ RunTime)。

系统调用(打开,关闭,读取,写入等)也在libc中。它们只是用汇编语言编写的软件中断的简单包装。

答案 2 :(得分:2)

libc相当于Linux中的kernel32,标准库的GNU扩展处理了你可以调用内核的所有方法。 (从技术上讲,libc相当于ntdll,但无论是在这里还是在那里)

编辑:只是为了澄清 - 内核本身导出了一些名为syscalls的特殊方式调用的函数;这些系统调用由实际函数包装;在Linux上,这是在libc中完成的,在Windows上完成两次,一次是ntdll(即NtCreateFile),然后是Kernel32(CreateFileW / A)。

Kernel32提供了许多其他功能,这些功能不是系统调用(即在用户模式下保持100%),就像libc一样。

答案 3 :(得分:1)

我想你可能在寻找:

linux-vdso.so.1 =>  (0x00000...)

Linux内核的“虚拟库”链接。

您的内核标题将为您提供API详细信息。

通过快速谷歌找到了这个。

http://www.trilithium.com/johan/2005/08/linux-gate/

答案 4 :(得分:0)

您将手动查找要使用的kernel32.dll中win32的哪些功能,并在linux / gnu中查找替换内容。 linux使用了大量的共享库。并非所有操作系统都在同一位置直接替换。有些图书馆可以处理跨平台的事情。