gcc Compiler starten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,
    habe mir vor kurzem den Raspberry Pi 2 gekauft.
    Bin zwar Neuling im Bereich Linux, im Bereich C++ kann ich aber schon einige Jahre programmieren aufweisen.
    Nun zu meiner Frage:
    Wie bekomme ich den gcc oder g++ Compiler gestartet?
    Benutze als OS Raspbian. Compiler ist installiert...

    LG
    Dominik


  • Nun zu meiner Frage:
    Wie bekomme ich den gcc oder g++ Compiler gestartet?

    ich verstehe deine Frage nicht. Siehe z. B. die Ausgaben von:

    Code
    which gcc g++
    gcc --version
    echo "int main(void) {const char msg1[] = {'H','e','l','l','o',' ','w','o','r','l','d'}; puts(msg1); return 0;}" | gcc -s -x c - && ./a.out && rm ./a.out

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Im Internet sieht man immer, dass die immer ein Fenster für einen den Compiler geöffnet haben. Nur bekomme ich diesen Compiler nicht angezeigt.. Mir fehlt quasi das Icon wie bei Windows und das sich danach öffnende Fenster.

    Himbeerschlange
    das kommt bei mir dann als Ausgabe:
    gcc: error: file.c: No such file or directory
    gcc: fatal error: no input files
    compilation terminated.

  • Hallo Dominik.

    Wo soll das ganze angezeigt werden? Der Kompiler ist konsolenbasierend, da gibt es keine SchickiMicki GUIs dazu. Ansonsten weiß ich nicht, was nun genau dein Problem ist.
    Was Himbeerschlange schreibt, ist lediglich ein Beispiel. Wenn du keine file.c geschrieben hast, welche in dem Ordner liegt, dann kann das auch nicht kompiliert werden. Mir ist gerade nicht bewusst, was du als jahrelange programmieren meinst. In welchem Bereich, Sprache...?

  • Hi,
    nur mal zur Richtigstellung ...


    soweit ich mich erinnere: $ gcc file.c -o file.o
    zum ausfuehren: ./file.o
    ...


    würde funktionieren, macht aber afaik kein Mensch so.
    Hintergrund: Dateien mit der Endung .o enthalten i.d.R. Objectcode - also Maschinencode, der mit einem Compiler oder Assembler erzeugt wurde.
    Das ausführbare Programm hat unter Linux in der Regel keine Erweiterung und würde in Deinem Beispiel einfach nur file heissen.
    Bei solchen Dingen ist aber darauf zu achten, dass der Programmname möglichst nicht mit einem Linux-Kommando in Konkurrenz steht ( gern gemachter Fehler: test.c nach test übersetzen, anschliessend test aufrufen und wundern, warum das "Hello world" nicht ausgegeben wird ;) ).
    Also korrekt wäre:

    Code
    gcc -o myPro myProg.c


    und dann mit

    Code
    ./myProg


    aufrufen.

    cheers,
    -ds-

  • Hallo sschultewolter,
    was sieht man denn dann immer für Compiler bei youtube?

    Ich habe bisher über Windows in Visuel Sudios mit C++ gearbeitet.
    Vllt nicht soweit das es hier als programmieren angesehen wird, aber zumindest die Grundgesetzmäßigkeiten sowie Ausdrucksweisen sind bekannt an denen ich hoffentlich aufbauen kann ;)
    Habe dies hauptsächlich in der fachbezogenen Schule und in er damaligen Ausbildung zum Elektroniker für Betriebstechnik geleert bekommen.

    Gibt es denn so einen Compiler für C++ auch für Linux oder sollte ich mir keine Hoffnungen machen und anfangen über die Console zu arbeiten?

  • Wenn Du jahrelang Erfahrung mit Visual Studio hast, dann solltest Du imho aber wissen, dass Visual Studio kein C/C++ Compiler sondern nur eine IDE ist ;)
    Und ich denke, das ist dann wohl das, was Du suchst ...
    Mir fallen da ad hoc nur geany und code::blocks ein.

    cu,
    -ds-

  • Wie ds gesagt hat, es handelt sich hier nur um die Entwicklungsumgebung. Was für Videos du dir auf Youtube anschaust, weiß ich nicht. In keinem meiner C/C++ Programmierschinken wird großartig auf eine GUI eingegangen, weil das absolut unnötig ist. Ansonsten als IDE würde ich eher zu Geany raten, aber den Komfort von Visual Studio wirst du auf dem Raspberry nicht bekommen.

  • Hallo Dominik, hallo zusammen,

    ich habe Anfang 2013 alles Anwendungen, die sich als IDE bezeichnen untersucht. Meiner Meinung nach ist Geany das mit Abstand beste Produkt.
    - Es ist für eine Reihe von Programmiersprachen bereits vollkommen eingerichtet
    - Es lässt sich mit vertretbarem Aufwand für vollkommen exotische Programmiersprachen einrichten
    - Es verfügt über alle Features, die andere (professionelle) Anwendungen auf anderen Betriebssystemen auszeichnen
    - Der Programmierer, der in mehr als 1 bis 3 Programmiersprachen arbeitet, muss sich nicht immer wieder auf anderen Umgebungen einstellen - einmal Geany konfigurieren und schon ist es fast egal, in welcher Sprache man programmiert

    Wenn ich bei mir Geany öffne, dann werden alle aktuellen Projekte geöffnet - momentan Code in 6 verschiedenen Programmiersprachen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • > int main(void) {const char msg1[] = {'H','e','l','l','o',' ','w','o','r','l','d'}; puts(msg1); return 0;}
    Warum so kompliziert ?

    Und wo ist der String-Terminator ??

    Code
    int main(void) { puts("Hello world"); return 0;}

    Das ist kein String, sondern ein eindimensionales array dessen Elemente char-Werte sind und dieses array muss nicht Null-terminiert sein (... wie ein "klassischer" String).

    Code
    const char msg[11] = {'H','e','l','l','o',' ','w','o','r','l','d'}


    geht auch.

    Dein code kann so nicht aus stdin, an gcc übergeben werden. Z. B.:

    Code
    :~$ echo "int main(void) { puts("Hello world"); return 0;}" | gcc -s -x c -
    <stdin>: In Funktion »main«:
    <stdin>:1:23: Fehler: »Hello« nicht deklariert (erste Benutzung in dieser Funktion)
    <stdin>:1:23: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
    <stdin>:1:29: Fehler: expected »)« before »world«

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample


  • Das ist kein String, sondern ein eindimensionales array dessen Elemente char-Werte sind und dieses array muss nicht Null-terminiert sein (... wie ein "klassischer" String).

    Code
    const char msg[11] = {'H','e','l','l','o',' ','w','o','r','l','d'}


    geht auch.

    Nun, was Du da schreibst stimmt schon. Was Tell vermutlich sagen will ist - der Code gibt zwar mindestens "Hello World" aus, ggf. aber auch mehr. Das Array ist nicht null-terminiert und ob dahinter 0en kommen obliegt dem Zufall, dem Padding, Loader...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!