Allerdings stimmt die Verzeichnisstruktur von Windows 8+ schon mal nicht mit der von Linux überein. Dort werden ja Anwendungen in usr installiert. Dises Verzeichnis fehlt schon mal.
Es existiert außerdem das Windows Verzeichnis wie in früheren Versionen und ich habe soeben auch das System32 Verzeichnis gefunden, wo auch die alten Bekennten drin sind wie zb. advapi32.dll. Sieht soweit eher nach reinrassigem Windows aus.
Selbst wenn Windows einen Linuxkernel nutzen würde (was es ja nicht tut), dann müsste die Verzeichnisstruktur nicht identisch sein. Dem Linuxkernel an sich ist es nämlich egal wo was liegt, dass kann jetzt
/usr,
/users oder
/devices/driveC/Program Files sein.
Cygwin emuliert allerdings nichts, sondern stellt eine Unixoide Umgebung für typische Linux-Programme bereit, die aber für Windows kompilliert wurden.
Wine emuliert genauso viel/wenig wie Cygwin. Es mappt "einfach" nur die Systemaufrufe, die unter Windows zum Kernel/System (das meint nicht kernel32.dll!) durchgereicht würden auf entsprechende POSIX APIs. Außerdem steht es ja bereits im Namen:
Wine
is
not an
emulator.
Jedenfalls macht der Fakt, das Cygwin für die Ausführung von Linux Programmen auf der Windows Maschine gebaut wurde auchh schon klar, das es da große Unterschiede geben muss, wenn diese Linux-Programme für Windows übersetzt wurden, damit sie mit Cygwin laufen. Ich hatte gedacht, das diese Linux Programme dann auch für Linux überseetzt wurden, nun aber auf Windows laufen sollen. Daher überrascht mich, das solche Programme für Windows übersetzt werden. Trifft das immer zu für Cygwin?
In der POSIX-Welt (bei der Linux nur ein Beispiel ist) trifft sich normalerweise nur Quelltextkompatibilität zwischen den verschiedenen Betriebssystemen (Linux, Mac
OS X, FreeBSD, NetBSD, OpenBSD, Minix, etc.) aber keine Binärkompatibilität. Es ist da ganz normal, dass Programme vom Quellcode weg für das jeweilige Zielbetriebssystem kompiliert werden (egal ob Open Source Programm oder nicht; im einen Fall macht es die bereitstellende Firma im anderen der Nutzer selbst). Selbiges trifft eben auch für Cygwin oder die von mir bevorzugten
Services for Unix Applications (SUA) zu, welche von Microsoft bereitgestellt werden (oder zumindest bis 7 wurden; die Situation in 8 hab ich noch nicht ganz durchstiegen).
Im Gegensatz zu Cygwin ist SUA um einiges tiefer und besser in Windows integriert, da es ein sogenanntes NT Subsystem ist, genauso wie das
Win32 Subsystem*.
*Zur Erklärung: die Windows
API, mit der wir unter Windows programmieren (direkt oder indirekt) ist nicht die eigentliche
API des Betriebssystems; stattdessen ist die
API, welche durch die NTDLL bereitgestellt wird die
API des Kernels. Die gewohnte Windows Umgebung wird durch ein sogenanntes Subsystem bereitgestellt, welches auf dieser
API aufsetzt (durch die ganzen typischen DLLs wie
kernel32.dll und Co. und den Prozess CSRSS). Das ist ein zentrales Konzept der NT Architektur und wurde zumindest bis Windows 2000 rege genutzt, da es dort auch ein
OS/2 Subsystem gab, mit dem es möglich war
OS/2 Kommandozeilenprogramme unter Windows auszuführen. Heutzutage ist wenn überhaupt nur noch das POSIX Subsystem aka SUA übrig geblieben.
Gruß,
Sven