代码之家  ›  专栏  ›  技术社区  ›  Unknown

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

  •  2
  • Unknown  · 技术社区  · 16 年前

    msvcrt.dll->libc.so.6

    内核32.dll->?

    5 回复  |  直到 16 年前
        1
  •  9
  •   Rutger Nijlunsing    16 年前

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

        2
  •  4
  •   Juliano    16 年前

    MSVCR.DLL与LBC相比,实际上不是6。因为第一个是VC++的专用DLL(MVCRT & Gt;微软Visual C++运行时)。

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

        3
  •  2
  •   Ana Betts    16 年前

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

    Kernel32还提供了许多其他非系统调用的函数(即100%保持用户模式),就像libc一样。

        4
  •  1
  •   Aiden Bell    16 年前

    我想你可能在寻找:

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

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

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

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

        5
  •  0
  •   Daniel A. White    16 年前

    您必须在kernel32.dll中手动查找要使用的win32函数,并在linux/gnu中找到替换函数。linux使用了大量的共享库。并不是所有的操作系统都在同一个位置直接替换。有些图书馆确实负责跨平台的工作。