Cling mit Windows
Cling mit Windows
Cling ist ein C++ Interpreter, das per Command Line direktes Schreiben und Ausführen von C++ Code erlaubt. Vom CERN entwickelt und ein Nachfolger von CINT, ist der C++ Interpreter dafür gedacht, um bestimmte Code Ideen in C++ schnell auszuprobieren, ohne die ganze Applikation “builden” zu müssen - oder zumindest ist dies mein Eindruck, wofür Cling sein könnte. Cling erlaubt das partielle laden von Modulen und ermöglicht so auch isoliertes Testen von Code. Damit verhilft es C++ Entwicklern effizienter C++ Code zu schreiben und produktiver zu sein, da Sie beim Einführen von neuem Code nicht auf lange Builds warten müssen, nur um herauszufinden, dass Ihr Code nicht funktioniert. Auch kann der C++ Interpreter für das Erlernen von C++ benützt werden. Das Jupyter Tool - ein interaktives “Editor” Tool, das live Code evaluieren kann - hat hierfür speziell Cling Kernels, die das interaktive Schreiben und Interpretieren von C++ Code in dessen Editor erlaubt. Aber man braucht nicht wirklich Jupyter, um mit Cling zu spielen - das schöne Interface von Jupyter ist einfach ein Bonus.
Bild 1: Cling mit Jupyter auf Ubuntu VM auf Windows
Doch leider funktioniert diese Kombination zurzeit nicht auf Windows. Oder ich habe die Lösung dazu noch nicht finden können. Man kann aber Cling auch direkt in der Konsole von Windows gebrauchen - ohne zusätzliche Tools.
Das Potenzial C++ wie JavaScript direkt interpretiert zu haben, ist, wie ich zugeben muss, sehr aufregend. Ich stelle mir Cling wie ein Notizblock für C++ vor, dass bestimmten Code mich direkt evaluieren lässt, ohne das ich den Code builden muss. Ein sehr hilfreiches Tool, wie ich finde, vor allem wenn man bedenkt, dass die Buildzeiten mit der Grösse der Applikation immer weiter zunehmen. Auch wenn heutige Buildumgebungen multithreaded Builds erlauben, die diese Phase sichtlich verkürzen, ist jedoch ein Interpreter immernoch schneller. Perfekt für das Experimentieren von Algorithem und neuen Strukturen, wie ich finde.
Nun aber zum Hauptzweck des Blogs: Setup von Cling auf Windows.
Ich habe drei Methoden ausprobiert, die zu unterschiedlichen Ergebnissen geführt haben. Die drei Methoden sind die folgenden:
1) Cling mit Jupyter auf einer virtuellen Umgebung mit Ubuntu
2) Cling ohne Jupyter per Linux Subsystem
3) Cling ohne Jupyter direkt
OK, gehen wir Schritt für Schritt vor.
1) Cling mit Jupyter auf einer virtuellen Umgebung mit Ubuntu
Meiner Meinung nach die einfachste Variante. Man installiert eine virtuelle Umgebung wie z.B. Oracle VM VirtualBox https://www.virtualbox.org/ und spielt ein Ubuntu Image auf https://www.virtualbox.org/wiki/Linux_Downloads.Danach lässt man das Script von der CERN - Seite laufen, und Voila, alles ist automatisch aufgesetzt. https://root.cern.ch/cling-build-instructions
Ich rate hier den Build Script herunterzuladen und im Terminal aufzurufen. Falls Ihr euch traut, die manuelle Instruktionen zu folgen, Hut ab. Auf einem Ubuntu System solltet Ihr aber sowieso nicht allzu viel Probleme haben.
Für die manuelle Installation:
git clone http://root.cern.ch/git/llvm.git src
cd src
git checkout cling-patches
cd tools
git clone http://root.cern.ch/git/cling.git
git clone http://root.cern.ch/git/clang.git
cd clang
git checkout cling-patches
cd ../..
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=[Install Path] -DCMAKE_BUILD_TYPE=[Build configuration, e.g. Release or Debug] ..\src
cmake --build .
cmake --build . --target install
Für [Install Path] —> Der Installationspfad —> z.B.: -DCMAKE_INSTALL_PREFIX=C:/Cling
Falls cmake noch nicht installiert ist:
sudo apt-get install cmake
sudo apt-get upgrade
Kleiner Tipp: Der Shell - Script mag nicht direkt ausführbar sein, mit einem chmod +x DATEI_NAME.sh könnt Ihr aus dem Shell-Script ein ausführbares Skript machen.
Ist Cling einmal installiert, können wir uns auf die Integration mit Jupyter konzentrieren. Damit Ihr nun Cling mit Jupyter benützten könnt, müsst Ihr noch Jupyter installieren. Normalerweise sollte Jupyter in der Python Installation mitgeliefert sein, falls nicht, könnt Ihr diesen Instruktion von Jupyter folgen: http://jupyter.org/install.html
Für Python 3:
python3 -m pip install --upgrade pip
python3 -m pip install jupyter
Für Python 2:
python -m pip install --upgrade pip
python -m pip install jupyter
Danach könnt Ihr testen, ob Jupyter Notebook (der Editor von Jupyter) funktioniert, mit:
jupyter notebook
Habt Ihr auch Python nicht installiert, könnt Ihr den Instruktion hier folgen: https://wiki.ubuntuusers.de/Python/
Für Python 3:
sudo apt-get install python3
Für Python 2:
sudo apt-get install python
OK, soweit so gut. Nun muss man noch die Kernels für Jupyter installieren, damit dieser von Jupyter benutzt werden kann. Hierfür geht man per Terminal (cd) im installierten Cling Ordner unter inst/share/cling/Jupyter/kernel und installiert die Kernels wie folgt: (Instruktionen sind hier zu finden: https://github.com/vgvassilev/cling/tree/master/tools/Jupyter)
export PATH=/cling-install-prefix/bin:$PATH
cd /cling-install-prefix/share/cling/Jupyter/kernel
pip install -e .
# or: pip3 install -e .
# register the kernelspec for C++17/C++1z/C++14/C++11:
# the user can install whichever kernel(s) they
# wish:
jupyter-kernelspec install [--user] cling-cpp17
# jupyter-kernelspec install cling-cpp17 geht auch
jupyter-kernelspec install [--user] cling-cpp1z
jupyter-kernelspec install [--user] cling-cpp14
jupyter-kernelspec install [--user] cling-cpp11
Ihr müsst nicht alle kernels installieren, einer genügt. Nachdem Ihr die Installation der Kernels abgeschlossen habt, solltet Ihr nun per jupyter notebook den Editor starten. Nun solltet Ihr unter “New” die Kernel Optionen sehen:
Bild 2: Jupyter C++ Kernels
Ab nun könnt Ihr herumexperimentieren. Das Setup mit VM Ubuntu auf Windows von Cling auf Jupyter ist hier abgeschlossen. Nur so als Nebenbemerkung: Ihr könnt mit Jupyter Notebook auch Python Code interaktiv testen.
2) Cling ohne Jupyter per Linux Subsystem
OK, dieser Schritt ist ein bisschen mühsamer. Denn bevor wir überhaupt etwas mit Cling anstellen, müssen wir noch das Subsystem Linux auf Windows aktivieren. Hierzu müssen wir zuerst einmal den Entwickler-Modus für Windows 10 aktivieren. Unter Einstellungen, tippt in der Suche “Entwicklermodus” ein, dies sollte euch den Unterpunkt “Entwicklerfunktionen verwenden” anzeigen. Öffnet diesen Punkt und aktiviert “Entwicklermodus”.Bild 3: Entwicklermodus Windows
Ist dieser Schritt einmal getan, müsst Ihr nun unter Systemsteuerung > Programme und Features auf “Windows Features aktivieren oder deaktivieren” und das Linux-Subsystem aktivieren.
Bild 4: Windows Feature Subsystem Linux
Hier müsst Ihr den Computer neustarten. Ist der Computer neugestartet, sollte nun bash als Command unter der Appsuche verfügbar sein. Aber Achtung, der bash für das Subsystem sieht nicht wie das Bild unten aus, erst nach der Installation des Subsystems:
Bild 5: Bash on Ubuntu on Windows
Habt Ihr den bash gestartet, wird die Installationsroutine für das Linux Subsystem gestartet, es wartet auf einen Ja oder Nein Input, um mit der Installation fortzufahren. Um Fortzufahren tippt “J” ein. Das Subsystem wird installiert.
Ist dieser Prozess fertig, ist nun Linux als Subsystem unter Windows 10 verfügbar.
OK, nun können wir ein Binary für Ubuntu von CERN herunterladen und mit dem Subsystem entpacken + die Executables ausführen.
Um sicherzustellen, dass Ihr auch die richtige Version herunterladen, rate ich euch im bash des Subsystems (Command Konsole aufmachen, bash eintippen, —> bringt euch zur Konsole des Subsystems) diesen Command einzutippen:
lsb_release -r
Bild 6: Überprüfe die Version des Subsystems
Als Output wird Ihr die Version des Ubuntu Subsystems erhalten. Orientiert euch nach dieser Version, wenn Ihr den Build von der CERN Seite herunterladet: https://root.cern.ch/download/cling/
Danach entpackt Ihr die Datei per: tar -xjf DATEI_NAME.tar.bz2
OK, damit wäre auch diese Methode fertig. Denn, per Linuxsubsystem könnt Ihr die Binaries im entpackten Ordner starten und Cling direkt gebrauchen.
Aber auch hier ist Achtung angesagt: Die Cling Installation kann teils inkompatibel sein. Also seid nicht überrascht, wenn beim Aufruf von Cling per Subsystem einige Fehler aufgeworfen werden.
3) Cling ohne Jupyter direkt
OK, hier die wohl für Windows interessanteste Version. Direkte Installation von Cling. Vorab, was wir hierfür brauchen werden:CMake Version 3.10.0 (Drei Punkt ZEHN, nicht EINS, ZEHN Punkt Null)
Visual Studio 15 2017 (die aktuellste Version von Visual Studio und desen Toolchain)
OK, befolgt die folgenden Schritte für die Installation, nachdem die vorherigen Punkte entsprechend angepasst/installiert sind:
Instruktionen sind hier zu finden: https://github.com/root-project/cling/issues/186
Aller Lob geht an @ahmidou.
git clone http://root.cern.ch/git/llvm.git src
cd src
git checkout cling-patches
cd tools
git clone http://root.cern.ch/git/cling.git
git clone http://root.cern.ch/git/clang.git
cd clang
git checkout cling-patches
cd ../..
mkdir build
cd build
REM cmake -DCMAKE_INSTALL_PREFIX=[Install Path] -DCMAKE_BUILD_TYPE=[Build configuration, e.g. Release or Debug] ..\src
cmake -DCMAKE_INSTALL_PREFIX=C:/WORK/CLING -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 2017 Win64" C:/WORK/CLING/src
cmake --build .
cmake --build . --target install
Ihr solltet diese Flags anpassen: -DCMAKE_INSTALL_PREFIX=C:/WORK/CLING und C:/WORK/CLING/src entsprechend eurem Installationsordner.
Achtung: Die Installation kann sehr lange dauern + sehr gross werden (bei mir war der Ordner am Ende um die 50GB gross).
Ist dieser Prozess einmal abgeschlossen, öffnet den LLVM.sln und erstellt/build’ed die Projekte von Visual Studio aus. Auch dieser Schritt kann sehr lange dauern. Aber danach sollten alle Binaries erfolgreich erstellt sein.
Ihr könnt den bin - Ordner auf der höchsten Ebene (z.B. bei mir D:\CERN\bin) in die Umgebungsvariablen des Systems einfügen (ie. System —> Erweiterte Einstellungen —> Umgebungsvariablen —> Path - Variable erweitern)
Danach solltet Ihr “cling” direkt im Command ausführen können
Bild 7: Cling in der Command Konsole
Und damit hättet Ihr cling direkt auf Windows installiert! Glückwünsch.
Bei allfälligen Fehler etc… müsst Ihr euch leider selbst helfen, ich habe gute drei Tage mit verschiedenen Einstellungen verschwendet und Lösungen in zig Foren durchsucht. Diese haben für mich funktioniert, ich hoffe sie funktionieren auch für euch. :D
Kommentare
Kommentar veröffentlichen