WSL und Crosscompiling

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben

WSL und Crosscompiling

Beitragvon Warf » 6. Mai 2018, 03:34 WSL und Crosscompiling

Hey ho Leute.

Beim rumspielen mit dem Windows Subsystem for Linux (WSL) ist mir etwas interessantes aufgefallen. Falls es jemand nicht kennt, das WSL ist ein System um Linux Programme unter Windows auszuführen (ähnlich zu Wine unter Linux). Das WSL übernimmt also lediglich Kernel funktionalität, bzw übersetzt Linux Kernel anfragen für den NT Kernel. Darum gibt es dann Distributionen (ich verwende OpenSuSe) welche eine Linux-ähnliche Umgebung schaffen. Das WSL hat allerdings auch vollen Zugriff auf die Windows Welt z.B. auf das Dateisystem, so können sogar Windows Anwendungen aus dem WSL ausgeführt werden. Linux Programme können über das Programm C:\Windows\System32\wsl.exe ausgeführt werden (z.b. "wsl ls" führt ls der Coreutils der Distribution aus).

Wenn man jetzt auf der Distribution FPC installiert hat kann man einfach pascal Programme kompilieren: "wsl fpc ./test.pas". Damit spuckt mir der FPC für Linux ein wunderbar funktionsfähiges Linux X64-86 Programm aus. Da auch Windows Pfade im WSL angenommen werden können sogar die von Lazarus generierten FPC Aufrufparameter für ein Projekt einfach übernommen werden.

Da stellt sich mir jetzt die Frage, könnte man nicht in Lazarus ein WSL Interface zum Crosscompilen implementieren? AFAIK ist es auch einfacher von Linux X64-86 zu anderen Platformen wie Linux ARM oder Mac OSX zu Crosscompilen, was damit für Windowsnutzer dann genauso einfach möglich wäre.

Den GDB könnte man so übrigens genauso verwenden

Was haltet ihr davon?
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 6. Mai 2018, 17:34 Re: WSL und Crosscompiling

Falls es jemand nicht kennt, das WSL ist ein System um Linux Programme unter Windows auszuführen (ähnlich zu Wine unter Linux)
Wurde dies nicht kürzlich in Win10 eingebaut ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4327
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon thosch » 6. Mai 2018, 19:59 Re: WSL und Crosscompiling

Wenn das der Fall wäre, wie rufe ich das denn dann auf? Und mit welchem Update kann ich dann damit rechnen, das WSL zu besitzen?
thosch
 
Beiträge: 134
Registriert: 10. Jul 2017, 19:32

Beitragvon Mathias » 6. Mai 2018, 21:28 Re: WSL und Crosscompiling

Zuerst installieren, das Paket heist: "Windows-Subsystem für Linux (Beta)".
Ich hoffe das dies weiter hilft.

Und mit welchem Update kann ich dann damit rechnen, das WSL zu besitzen?
Dies ist schon länger dabei, aber ist immer noch Beta.

PS: Die Anhänge gehen wieder nicht mehr.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4327
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Warf » 6. Mai 2018, 21:49 Re: WSL und Crosscompiling

Wenn du eine aktuelle Windows 10 Version hast (Mindestens Herbstupdate 2017) kannst du dir einfach eine Distribution (OpenSuSe oder Ubuntu) aus dem Windows Store runterladen. Das ist einfach klicken und warten bis es installiert ist (Eventuell musst du vorher noch in Features hinzufügen und Ändern das Windows Subsystem für Linux installieren, weiß es nicht mehr genau). In älteren versionen ist nur die beta drin von der Matthias erzählt, die ist etwas umständlicher.

Wie genau das mit multiplen distributionen (z.B. OpenSuSe und Ubuntu) läuft weiß ich nicht, ich verwende nur OpenSuSe

Für eine komfortablere Nutzung kann man sich auch das WSLtty runterladen, ein Terminal emulator für die WSL der auf mintty aufbaut, mit revolutionären Features wie context Menüs, etc., wie man sie von anderen Systemen wie xTerm unter Linux oder dem Terminal von OSX kennt, oder die Git Bash, falls die wer benutzt (kann ich auch nur empfehlen).

Mathias hat geschrieben:Dies ist schon länger dabei, aber ist immer noch Beta.


AFAIK ist seit dem Fall Update das aus der beta raus oder irre ich mich da?
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 6. Mai 2018, 21:56 Re: WSL und Crosscompiling

In älteren versionen ist nur die beta drin von der Matthias erzählt, die ist etwas umständlicher.

Ich versuche gerade dies zu installieren, nur ist Win10 in der VB gähnend langsam. Ich liebe Linux, ein kurzes "apt install abc", ein paar Sekunden und es ist installiert, Windoof braucht für sowas fast ein Schaltjahr. :evil:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4327
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Warf » 7. Mai 2018, 01:35 Re: WSL und Crosscompiling

Mathias hat geschrieben:
In älteren versionen ist nur die beta drin von der Matthias erzählt, die ist etwas umständlicher.

Ich versuche gerade dies zu installieren, nur ist Win10 in der VB gähnend langsam. Ich liebe Linux, ein kurzes "apt install abc", ein paar Sekunden und es ist installiert, Windoof braucht für sowas fast ein Schaltjahr. :evil:


Das Problem dabei ist, Windows ist sehr Grafik aufwendig und virtualbox kann das nicht so gut. Darum habe ich mir für meinen Mac Laptop VMWare gekauft, da ich darauf öfter mal Windows benutzen muss, und es das deutlich schneller macht

Der Alte installer ist aber auch super Low über den Windows Store geht’s besser (und ich mag openSuSe mehr als ubuntu, das gibt’s nur mit dem Store)
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Socke » 7. Mai 2018, 08:54 Re: WSL und Crosscompiling

Warf hat geschrieben:Da stellt sich mir jetzt die Frage, könnte man nicht in Lazarus ein WSL Interface zum Crosscompilen implementieren? AFAIK ist es auch einfacher von Linux X64-86 zu anderen Platformen wie Linux ARM oder Mac OSX zu Crosscompilen, was damit für Windowsnutzer dann genauso einfach möglich wäre.


Reicht es nicht aus, im Projekt einen zweiten Erstellmodus mit anderem Compiler (wsl fpc) einzurichten?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2546
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Niesi » 7. Mai 2018, 09:13 Re: WSL und Crosscompiling

Warf hat geschrieben:Hey ho Leute.

Beim rumspielen mit dem Windows Subsystem for Linux (WSL) ist mir etwas interessantes aufgefallen. Falls es jemand nicht kennt, das WSL ist ein System um Linux Programme unter Windows auszuführen (ähnlich zu Wine unter Linux). Das WSL übernimmt also lediglich Kernel funktionalität, bzw übersetzt Linux Kernel anfragen für den NT Kernel. Darum gibt es dann Distributionen (ich verwende OpenSuSe) welche eine Linux-ähnliche Umgebung schaffen. Das WSL hat allerdings auch vollen Zugriff auf die Windows Welt z.B. auf das Dateisystem, so können sogar Windows Anwendungen aus dem WSL ausgeführt werden. Linux Programme können über das Programm C:\Windows\System32\wsl.exe ausgeführt werden (z.b. "wsl ls" führt ls der Coreutils der Distribution aus).

Wenn man jetzt auf der Distribution FPC installiert hat kann man einfach pascal Programme kompilieren: "wsl fpc ./test.pas". Damit spuckt mir der FPC für Linux ein wunderbar funktionsfähiges Linux X64-86 Programm aus. Da auch Windows Pfade im WSL angenommen werden können sogar die von Lazarus generierten FPC Aufrufparameter für ein Projekt einfach übernommen werden.

Da stellt sich mir jetzt die Frage, könnte man nicht in Lazarus ein WSL Interface zum Crosscompilen implementieren? AFAIK ist es auch einfacher von Linux X64-86 zu anderen Platformen wie Linux ARM oder Mac OSX zu Crosscompilen, was damit für Windowsnutzer dann genauso einfach möglich wäre.

Den GDB könnte man so übrigens genauso verwenden

Was haltet ihr davon?



Warum und wozu?

Diese ganze Simuliererei von Betriebssystemen unter anderen Betriebssystemen kostet einfach nur Zeit. Quelltexte so halten, dass sie sowohl als auch einfach kompiliert werden können. Dann kann jedes OS seine Stärken ausspielen (oder eben jede "WarumauchimmerVorliebe" bedient werden).

Das Wesentliche ist doch, mit Lazarus gute Software zu entwickeln ...

Ist jetzt mal so meine Meinung ...
Niesi
 
Beiträge: 62
Registriert: 26. Jun 2016, 18:44

Beitragvon Warf » 7. Mai 2018, 13:57 Re: WSL und Crosscompiling

Niesi hat geschrieben:
Warf hat geschrieben:Hey ho Leute.

Beim rumspielen mit dem Windows Subsystem for Linux (WSL) ist mir etwas interessantes aufgefallen. Falls es jemand nicht kennt, das WSL ist ein System um Linux Programme unter Windows auszuführen (ähnlich zu Wine unter Linux). Das WSL übernimmt also lediglich Kernel funktionalität, bzw übersetzt Linux Kernel anfragen für den NT Kernel. Darum gibt es dann Distributionen (ich verwende OpenSuSe) welche eine Linux-ähnliche Umgebung schaffen. Das WSL hat allerdings auch vollen Zugriff auf die Windows Welt z.B. auf das Dateisystem, so können sogar Windows Anwendungen aus dem WSL ausgeführt werden. Linux Programme können über das Programm C:\Windows\System32\wsl.exe ausgeführt werden (z.b. "wsl ls" führt ls der Coreutils der Distribution aus).

Wenn man jetzt auf der Distribution FPC installiert hat kann man einfach pascal Programme kompilieren: "wsl fpc ./test.pas". Damit spuckt mir der FPC für Linux ein wunderbar funktionsfähiges Linux X64-86 Programm aus. Da auch Windows Pfade im WSL angenommen werden können sogar die von Lazarus generierten FPC Aufrufparameter für ein Projekt einfach übernommen werden.

Da stellt sich mir jetzt die Frage, könnte man nicht in Lazarus ein WSL Interface zum Crosscompilen implementieren? AFAIK ist es auch einfacher von Linux X64-86 zu anderen Platformen wie Linux ARM oder Mac OSX zu Crosscompilen, was damit für Windowsnutzer dann genauso einfach möglich wäre.

Den GDB könnte man so übrigens genauso verwenden

Was haltet ihr davon?



Warum und wozu?

Diese ganze Simuliererei von Betriebssystemen unter anderen Betriebssystemen kostet einfach nur Zeit. Quelltexte so halten, dass sie sowohl als auch einfach kompiliert werden können. Dann kann jedes OS seine Stärken ausspielen (oder eben jede "WarumauchimmerVorliebe" bedient werden).

Das Wesentliche ist doch, mit Lazarus gute Software zu entwickeln ...

Ist jetzt mal so meine Meinung ...


Das gute am WSL ist ja, es wird dabei kein Betriebsystem simuliert. Ich kann Linux Programme ausführen ohne dabei dem Linuxkernel auch nur nahe zu kommen. Habe daher weder den Performanceverlust von einer Virtuellen Maschine (klar ein bisschen was geht verloren, ist aber eher vom overhead vergleichbar mit docker oder der JVM), noch den Ärger ein dual boot einzurichten (Grade als Mac User ist es gar nicht so einfach Linux im dual/tripple boot zu haben). Zumal ich vor allem das problem habe, das ich schlicht weg nicht genug speicher in meinem Mac habe um Windows, OSX und Linux vollständig installieren zu können (Für linux bleibt höchstens 20-30 GB)

Auf der anderen Seite habe ich so oder so das problem das ich für Linux entwickeln muss (ich habe immerhin einen Linux Server auf dem die software am ende laufen soll), privat verwende ich allerdings nur Windows und Mac OS. Das heißt entweder muss ich eine VM mit Linux starten, die zum einen super langsam ist, zum anderen mir mindestens 20 GB wertvollen speicher kostet. Mit dem WSL allerdings kann ich für meinen Server kompilieren (eventuell sogar mit dem GDB bereits für Linux debuggen) ohne dabei einmal Windows verlassen zu müssen, ohne performance verlust, und mit weniger als 5GB festplattenspeicherverbrauch (Inklusive FPC. Lazarus und komponenten werden ja mit Windows geteilt).
Und Crosscompiling von Windows -> *nix ist schon immer etwas komplizierter gewesen, da wäre es wahrscheinlich deutlich einfacher statt fpc args einfach wsl fpc args zu verwenden (zumal man den neusten stable fpc mittlerweile sogar über zypper bekommt)
Zuletzt geändert von Warf am 7. Mai 2018, 14:29, insgesamt 1-mal geändert.
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon m.fuchs » 7. Mai 2018, 14:03 Re: WSL und Crosscompiling

Warf hat geschrieben:Mit dem WSL kann ich für meinen Server Kompilieren (eventuell sogar mit dem GDB bereits für Linux debuggen) ohne dabei einmal Windows verlassen zu müssen, ohne performance verlust, und mit weniger als 5GB festplattenspeicherverbrauch (Inklusive FPC. Lazarus und komponenten werden ja mit Windows geteilt).
Und Crosscompiling von Windows -> *nix ist schon immer etwas komplizierter gewesen, da wäre es wahrscheinlich deutlich einfacher statt fpc args einfach wsl fpc args zu verwenden (zumal man den neusten stable fpc mittlerweile sogar über zypper bekommt)

Und wie testest du das ganze dann für Linux? Irgendwie verstehe ich den Sinn für Cross-Compiling nicht. Also abgesehen wenn man für leistungsschwache Systeme für AVR oder so entwickelt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Thandor » 7. Mai 2018, 14:05 Re: WSL und Crosscompiling

Also simulieren ist hir erst mal das falsche Wort es heißt emulieren. :wink:

Du darfst das WSL nicht mit eier virtuellen Machine vergleichen. Bei einer virtuellen Maschine wird ein PC emuliert mit CPU, Graphikkarte, Festplatte, ...
Bei WSL wird, nach meinem Verständnis, ein Linuxkern direkt auf der physischen CPU, ohne dass eine CPU emuliert werden muss, ausgeführt. Also ein "echtes" Linux unter/parallel zu Windows.
Thandor
 
Beiträge: 118
Registriert: 30. Jan 2010, 18:17
Wohnort: Berlin
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 1.6 mit FPC 3.0.0 (32Bit) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 7. Mai 2018, 14:11 Re: WSL und Crosscompiling

Thandor hat geschrieben:Bei WSL wird, nach meinem Verständnis, ein Linuxkern direkt auf der physischen CPU, ohne dass eine CPU emuliert werden muss, ausgeführt. Also ein "echtes" Linux unter/parallel zu Windows.

Nein. WSL bietet eine Schnittstelle für Linuxprogramme die so tut als wäre sie ein Linuxkernel. Die Aufrufe werden entsprechend zum Windows-Kernel weitergeleitet.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1970
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon MacWomble » 7. Mai 2018, 14:31 Re: WSL und Crosscompiling

WSL ist ein Kompatibilitätslayer und nutzt nicht den öffentlichen Linuxkernel.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 591
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Warf » 7. Mai 2018, 14:43 Re: WSL und Crosscompiling

m.fuchs hat geschrieben:Und wie testest du das ganze dann für Linux? Irgendwie verstehe ich den Sinn für Cross-Compiling nicht. Also abgesehen wenn man für leistungsschwache Systeme für AVR oder so entwickelt.


Auch über das WSL. Angenommen das WSL arbeitet wie der Linux Kernel, dann sollte das testen mit dem GDB der Linux Exec im WSL genauso ertragreich sein wie das testen unter Linux selbst. Da auf meinem Server auch OpenSuSe läuft ist das mit den Bibliotheken auch recht simpel, da ich einfach die selben Packages in Zypper installieren kann.

Ich kann z.B. einfach mit wsl fpc -g ./test.pas kompilieren, und dann mit wsl gdb ./test mit dem Debugger die Linux Exec debuggen. Die wsl.exe führt dabei nur den Linux GDB aus und verhält sich daher genauso. Prinzipiell müsste Lazarus damit also genauso kommunizieren können wie mit dem GDB.

Da es auch X-Server für Windows gibt könnte es sogar möglich sein GUI anwendungen über Linux laufen zu lassen, dafür kenn ich mich mit X11 und dem WSL aber definitiv zu wenig aus um da genaueres zu sagen zu können.
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Dies und Das



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried