Linuxには、OS関数をエクスポートする共有ライブラリがありますか?Kernel32.dllのLinuxに相当するものは何ですか?
MSVCRT.DLL - > libc.so.6と
kernel32.dllの - >?
Linuxには、OS関数をエクスポートする共有ライブラリがありますか?Kernel32.dllのLinuxに相当するものは何ですか?
MSVCRT.DLL - > libc.so.6と
kernel32.dllの - >?
'kernel32.dll'もlibc.so.6に変換されます。 Windowsは最低レベルのPOSIXではないので、POSIX libc呼び出しをネイティブWin32呼び出しに変換するためには、追加の層が必要です。これがmsvcrt.dllの目的です。 Kernel32.dllには最低レベルの呼び出しが含まれています。 Linuxでは、これらのシステムコールはすでにPOSIXであるため、余分なライブラリは必要ありません。
libcはLinuxのkernel32に相当します。標準ライブラリのGNU拡張機能は、カーネルに呼び出すことができるすべての方法を処理します。
編集(技術的には、libcのは、どちらもここにもそこNTDLLの同等ですが、):だけ明確にする - カーネル自体がシステムコールと呼ばれる特殊な方法で呼び出される関数の数をエクスポートします。これらのシステムコールは実際の関数で囲まれています。 Linuxではこれはlibcで行われ、Windowsでは2回、ntdll(NtCreateFile)、Kernel32(CreateFileW/A)の順で実行されます。
Kernel32には、libcと同様に、システムコールではない(つまり、ユーザモードで100%のまま)他の多くの機能があります。
msvcrt.dllは、VC++(msvcrt - > MicroSoft Visual C++ RunTime)用の特定のDLLであるため、実際にはlibc.so.6に匹敵しません。
システムコール(オープン、クローズ、読み取り、書き込みなど)もlibcにあります。これらは、アセンブリ言語で記述されたソフトウェアの中断を回避する単なるラッパーです。
は、私はあなたが探しているかもしれないと思う:
Linuxカーネルのための「仮想ライブラリ」リンクであるlinux-vdso.so.1 => (0x00000...)
。
あなたのカーネルヘッダーはAPIの詳細を提供します。
これはすばらしいgoogleで見つかりました。
VDSOはkernel32.dllよりもntdll.dllに似ています。 – CesarB
私はWindowsを使わない...暗闇の中で刺す:P –
これは完全には正確ではありません - ほとんどのmsvcrt関数は* msvcrtで処理されますが、strtokのようなものは絶対にカーネルには行きません! –
OSサポートが必要ない場合は、ライブラリが単独でそれを行うことができますが、それは当てはまります。 –
は、LinuxのVDSO +ヘッダーのOS機能をエクスポートします。 –