Visual Studio für Linux funktioniert nicht



  • Hallo,

    ich habe vor kurzem angefangen C++ zu lernen und komme ehrlich gesagt mit Visual Studio auf Linux nicht klar. Wenn ich debuggen möchte kommt folgende Fehlermeldung:

    Executing task in folder Test: g++ -g Code -o Code.out && clear && ./Code.out <

    /bin/bash: g++: command not found
    The terminal process terminated with exit code: 127

    Terminal will be reused by tasks, press any key to close it.

    Ich habe auch andere IDEs probiert, allerdings sind die nicht so anfängerfreundlich wie bei Windows.



  • hast du denn schon was erfolgreich kompiliert und gestartet? Gehts nur im Debugmodus nicht oder generell nicht?

    Grundsätzlich machts erstmal den Eindruck als müsstest du den Pfad noch setzen, wo der g++ "wohnt". Der scheint nicht bekannt zu sein.



  • Und was hat das mit VCL/C++ Builder zu tun?



  • @my1096 Welches Linux? Und ist g++ überhaupt installiert? Unter Ubuntu hilft vielleicht sudo apt-get install g++



  • @It0101

    Ich habe bis jetzt eigentlich nichts gemacht. Linux installiert , dann Visual Studio und gestartet.

    @wob

    Linux Mint. Habe jetzt den Befehl eingegeben, funktioniert leider immer noch nicht.

    http://i.epvpimg.com/g0MVfab.jpg



  • Da Visual Studio Code wahrscheinlich nicht als Paket in den Paketquellen enthalten war, musst Du zuerst alle notwendigen Entwicklerpakete nachinstallieren. Falls noch kein synaptic installiert ist, installiere dies zuerst und dann nutze synaptic, um die Pakete für die Softwareentwicklung nachzuinstallieren. Suchen nach "g++" und das Paket auswählen.



  • @john-0 Hab’s jetzt exakt so gemacht funktioniert aber immer noch nicht. Muss ich eventuell noch etwas im Visual Studio einstellen?



  • Als erstes solltest Du mit einem einfachen Editor eine »Hello World« eingeben.

    #include <iostream>
    
    int main () {
        std::cout << "Hello World!" << std::endl;
    }
    

    Abspeichern unter „hello.cc“ und in ein Terminal gehen, in das Verzeichnis wechseln in der das „hello.cc“ sich befindet. „g++ hello.cc -o hello“ eintippen. Wenn das funktioniert ist der Compiler richtig installiert und wird im $PATH gefunden. Das Programm auch noch mit „./hello“ ausführen, es sollte „Hello World!“ ausgegeben werden. Funktioniert das alles liegt der Fehler im Visual Studio Code.



  • @john-0

    Hab all das gemacht was du sagtest und den Code im Visual Studio nochmal gestartet. Hat tatsächlich geklappt danke erstmal dafür. Wenn ich nun ein neues Projekt erstelle und den gleichen Code nur mit einem anderen Textinhalt wie zb „Hello World2“ schreibe kommt nur das raus was ich vorherigen Code drin hatte.

    http://i.epvpimg.com/Px7agab.jpg

    Gibt es eventuell einen anderen IDE mit Compiler was einfacher zu bedienen ist? Oder ein (vorzugsweise deutsches) Tutorial wie man das als Anfänger alles gebacken bekommt? ^^


  • Gesperrt

    Dieser Beitrag wurde gelöscht!


  • @my1096 sagte in Visual Studio für Linux funktioniert nicht:

    Gibt es eventuell einen anderen IDE mit Compiler was einfacher zu bedienen ist? Oder ein (vorzugsweise deutsches) Tutorial wie man das als Anfänger alles gebacken bekommt? ^^

    Für den Anfang reicht ein Editor Deiner Wahl, und der Compiler im Terminal.



  • @john-0

    Gibt es nichts „kompakteres“ sprich etwas was alles beinhaltet wie bei Visual Studio für Windows?

    Wo ich einfach den Code hinschreibe und der Compiler den Code überprüft und anschließend ausgibt?



  • Du kannst Anjuta, QtCreator, Eclipse for C/C++ Programmers, Eclipse IDE for Scientific Computing, … verwenden. Es gibt da nicht die IDE für Linux. Willst Du Software mit GUI für LinuxMint schreiben, dann musst Du Gtk+3 oder den C++ Wrapper Gtkmm nutzen und dann wäre Anjuta die richtige Wahl. Wenn es nur um C++ für die Kommandozeile geht ist Eclipse gut und für Qt solltest Du den QtCreator nutzen.

    Für den Anfang ist erstmal wichtig, dass Du siehst, dass der Compiler läuft und Du ihn bedienen kannst. Denn falls es Probleme mit einer der IDEs gibt, bist Du sonst aufgeschmissen. Der Compiler liefert schon die korrekten Zeilennummer mit den Fehler aus.


  • Gesperrt

    Dieser Beitrag wurde gelöscht!

  • Gesperrt

    Dieser Beitrag wurde gelöscht!

  • Gesperrt

    Dieser Beitrag wurde gelöscht!

  • Gesperrt

    Dieser Beitrag wurde gelöscht!


  • Ich würde dir atom ans Herz legen. Das ist ein Code Editor, er kommt also nicht mit der Fähigkeit z.B. direkt per Knopf zu kompilieren (auch wenn das per plugin nachrüstbar wäre). Bringt allerdings ansonsten alles mit, was man für den Anfang braucht.

    Für den Anfang solltest du per Hand kompilieren. Dazu installierst du dir am besten ein Terminal direkt in Atom:
    Oben im Menü -> Packages -> SettingsView -> open -> Install
    Dort nach terminal suchen und platformio-ide-terminal installieren.
    Unten links hast du dann die Möglichkeit ein Terminal zu öffnen, das öffnet dann in der Regel in dem Pfad, wo du grade bist.

    Wenn du kompilierst immer darauf achten, dass du im richtigen Pfad bist (wo deine Dateien liegen), ansonsten kommt vermutlich ein Fehler wie "Datei xyz konnte nicht gefunden werden" (kommt auch, wenn du dich vertippst beim Namen😉).

    Die Aufgaben des Compilers: Präprozessor anweisungen auswerten, übersetzen und linken.

    Der einfachste Fall: Du hast nur eine einzige Datei main.cpp (so wird es am Anfang sein), deine ausführbare Datei soll z.B. Test.out heißen (frei wählbar)

    g++ -o Test.out main.cpp 
    

    Das wars auch schon, das Programm ausführen mit

    ./Test.out
    

    Mit weiterführenden Aufgaben wird vlt. der Fall eintreten, dass du mehrere .cpp Dateien hast und vlt. auch noch ein paar .h Dateien (Wobei du die ignorieren kannst beim kompilieren). Ist das der Fall musst du jede .cpp Datei erstmal für sich kompilieren ohne den Linker.

    g++ -c Datei1.cpp
    g++ -c Datei2.cpp 
    

    Daraus sollten dann Datei1.o und Datei2.o entstehen. Die Anweisung -c besagt, dass der Linker nicht benutzt wird.

    Nun deine ganzen kompilierten Dateien (mit dem Linker) zu einer ausführbaren Datei zusammenführen.

    g++ -o Test.out Datei1.o Datei2.o 
    

    Das Ausführen erfolgt wie eben schon über

    ./Test.out
    

    Wie du sehen kannst sind es 3 Befehle, die du können solltest und das kompilieren per Hand geht verhätlnismäßig einfach. Probier es einfach mal aus, es wird bestimmt auch dein Verstädnis über den Prozess verbessern als wenn ein Button irgendwas im Hintergrund macht.

    Um noch ein paar Fragen zu beantworten, die du dir evtl. stellen könntest:

    Was ist der Linker?

    Der Linker ist das Tool, was die Programmodule zusammenführt. Aus allen deinen .o Dateien und den Libraries die du evtl. verwendest (z.B. die Standardlibrary) wird dann deine ausführbare Datei.

    Ich hab mittlerweile 10 .cpp Dateien, das kompilieren nervt mich ganz schön, was kann ich tun, damit ich nicht 11 Befehle ausführen muss?

    Mit zunehmender Anzahl an Dateien wird es ganz schön nervig zu kompilieren, da du immer mehr Befehle eingeben musst. Abhilfe schaffen hier sogenannte Makefiles (oder auch CMake, was Makefiles für größere Projekte vereinfachen soll). Dort stellst du Regeln auf wie kompiliere alle .cpp zu .o Dateien etc.
    Der Aufruf erfolgt dann einfach mit

    make 
    

    Man kann sich hier ein universales Makefile schreiben, was automatisch alle Dateien einliest, kompiliert und am Ende linkt. Das kann ich dir ggf. zu einem späteren Zeitpunkt (wenn du soweit bist) zeigen.

    Kann der Compiler noch mehr?

    Ja kann er, er hat noch viele nützliche Features, zu denen ich dir unbedingt raten möchte. Eins davon ist z.B. die Option, dass dein Compiler dir zusätzliche Warnungen anzeigt, wenn du irgendwas tust, was vlt. nicht deiner Absicht entspricht. Das ist sehr empfehlenswert, denn es hilft dir und verbessert deine Programmierfähigkeiten. Dazu einfach in die Befehle oben ein

    -Wall
    

    einbauen z.B.

    gcc -Wall -c Datei1.cpp
    

    Es gibt noch andere nützliche/notwendige Optionen je nach Anwendungzweck z.B. wenn du externe Bibliotheken für Graphik etc. einbaust.

    Nur so nebenbei, um deine Ausrüstung fürs Programmieren zu installieren, nutze folgenden Befehl:

    sudo apt install build-essential
    

    Das installiert dir nicht nur automatisch, denn g++ compiler, sondern noch andere nützliche Tools, die du früher oder später brauchst (z.B. make für Makefiles). Dann musst du nicht alles einzelnd installieren (sudo apt install g++ etc.).
    Du kannst dafür natürlich auch syntapic oder ähnliches nutzen.
    Meiner Meinung nach ist das Terminal absolut ausreichend und du wirst dich schnell damit anfreunden, wenn du dich darauf einlässt😀



  • @Leon0402 sagte in Visual Studio für Linux funktioniert nicht:

    Der Linker ist das Tool, was die Programmodule (wie deine .cpp Datein und Header Dateien) zu einem ausführbaren Programm zusammenführt.
    Das heißt er ist vor allem für die
    #include

    Falsch. Der Linker hat null mit der include direktive zu tun. Das macht der Preprocessor.
    Der Linker führt die ganzen Objektdateien zu einem einzigen binary zusammen. Dabei wird auch geprüft ob alle externen Abhängigkeiten erfüllt sind.
    Das ist eine sehr grobe und rudimentäre Erklärung.



  • @firefly sagte in Visual Studio für Linux funktioniert nicht:

    Falsch. Der Linker hat null mit der include direktive zu tun. Das macht der Preprocessor.
    Der Linker führt die ganzen Objektdateien zu einem einzigen binary zusammen. Dabei wird auch geprüft ob alle externen Abhängigkeiten erfüllt sind.
    Das ist eine sehr grobe und rudimentäre Erklärung.

    Stimmt natürlich 🙂 Anweisungen mit # sind immer Sache des Präprozessors.
    Hatte irgendwie noch in Erinnerung, dass erstmal nicht geprüft wird, ob die Dateien vorhanden sind. Nach nochmaligen überlegen: Was ich meinte waren forward declarations und haben damit nix zu tun. Die Eklärungen habe ich entsprechend editiert und sollten nun hoffentlich stimmen.


Anmelden zum Antworten