Visual Studio für Linux funktioniert nicht



  • @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.



  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!


  • Dieser Beitrag wurde gelöscht!


  • 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