Что такое Linux-эквивалент Kernel32.dll? - PullRequest
2 голосов
/ 12 июня 2009

Есть ли у Linux общая библиотека, которая экспортирует функции ОС?

msvcrt.dll -> libc.so.6

kernel32.dll ->?

Ответы [ 5 ]

7 голосов
/ 12 июня 2009

'kernel32.dll' также будет переводиться в libc.so.6. Поскольку Windows не является POSIX на самом низком уровне, ей требуется дополнительный уровень для преобразования вызовов libc POSIX в собственные вызовы Win32. Это то, для чего msvcrt.dll. Kernel32.dll содержит вызовы самого низкого уровня. В Linux эти системные вызовы уже являются POSIX, поэтому дополнительная библиотека не требуется.

4 голосов
/ 12 июня 2009

msvcrt.dll на самом деле не сравним с libc.so.6, поскольку первая - это специальная DLL для VC ++ (msvcrt -> MicroSoft Visual C ++ RunTime).

Системные вызовы (открытие, закрытие, чтение, запись и т. Д.) Также выполняются в libc. Это просто обертки вокруг программных прерываний, написанные на ассемблере.

2 голосов
/ 12 июня 2009

libc является эквивалентом kernel32 в Linux, расширения GNU для стандартной библиотеки обрабатывают все способы, которые вы можете вызвать в ядре. (Технически libc является эквивалентом ntdll, но ни здесь, ни там)

Редактировать: Просто для пояснения - само ядро ​​экспортирует ряд функций, вызываемых специальным образом, называемых syscalls; эти системные вызовы обернуты фактическими функциями; в Linux это делается в libc, в Windows - дважды, один раз с помощью ntdll (т.е. NtCreateFile), затем снова с помощью Kernel32 (CreateFileW / A).

Kernel32 предлагает ряд других функций, которые не являются системными вызовами (т. Е. Остаются на 100% в пользовательском режиме), также как и libc.

1 голос
/ 12 июня 2009

Я думаю, вы можете искать:

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

Какая ссылка «виртуальная библиотека» для ядра Linux.

Ваши заголовки ядра предоставят вам детали API.

Нашел это с помощью быстрого Google.

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

0 голосов
/ 12 июня 2009

Вам придется вручную посмотреть, какие функции win32 в kernel32.dll вы хотите использовать, и найти замены в linux / gnu. Существует множество общих библиотек, которые использует Linux. Не все имеют прямую замену в одном и том же месте в разных операционных системах. Есть библиотеки, которые заботятся о кроссплатформенных вещах.

...