Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 31

Thema: Umgang mit gcc

  1. #1
    Bernhard Koschnick
    Gast

    Question Umgang mit gcc

    Hi Hackers

    Hab mal zum Einstimmen mit kwrite den Quelltext ~/prj/myapp.cpp geschrieben:

    #include <qapplicattion.h>
    #include <qlabel.h>

    int main( int argc, char* argv() )
    {
    QApplication myapp( argc, argv );

    QLabel* myLabel = new QLabel( "KDE ist toll" );
    myLabel->resize( 120, 30 );

    myapp.setMainWidget( myLabel );
    myLabel->show();
    return myapp.exec();
    }

    Vor der ellenlangen Syntax von # man gcc kapituliere ich hilflos.
    In 'KDE Anwendung und Programmierung', O'REILLY lese ich nur die Syntax:

    g++ -o qt1 qt1.cpp -I$QTDIR/include -L$QTDIR/lib -lqt .

    Keine weitere Hilfestellung. Also:

    bash-2.03# g++ -o myapp ~/prj/myapp.cpp -I$QTDIR/include -L$QTDIR/lib -lqt
    bash: g++: command not found

    OK, 'würfeln' und die Syntax auf gut Glück suchen.

    bash-2.03# gcc -o myapp ~/prj/myapp.cpp -I$QTDIR/include -L$QTDIR/lib -lqt
    /root/prj/myapp.cpp: file not recognized: File format not recognized .

    Jetzt wird's eng. Kwrite ist ein feines Werkzeug, Die Buch-Autoren sind
    authentische KDE-Spezialisten der ersten Stunde, ich kann nicht mal ein
    Minimal-Ziel erreichen: Wollte rauszufinden, ob das von kdevelop nicht
    gefundene Qt-1.4 vielleicht doch von anderen Hacker-Tools gefunden wird (SuSe 6.2).

    Kann mir jemand noch vor 'meinem ersten Studien-Semester' vielleicht einen
    kleinen Tip geben? Nur so für den Einstiegs-Geschmack? Wäre super.

    Gruss

    Bernhard

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.04.1999
    Ort
    Ulm
    Beiträge
    33

    Post

    Was ist jetzt genau dein Problem? Du willst wissen warum deine Befehlszeilen nicht funktioniert haben?

    Beim ersten Versuch würde ich sagen das du den C++-Compiler nicht installiert hast. Und der zweite Aufruf mit gcc .. Naja, der gcc ist "nur" der C-Compiler und versteht die Syntax von C++ natürlich nicht.

    Jimmy

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    Hallo Berhard!

    Also zuerst mal hoffe ich das du dich oben in deinem Quelltext vertippt hast!
    Versuch es mal mit dieser Version hier:

    Code:
    #include &lt;qapplication.h&gt;
    #include &lt;qlabel.h&gt;
    
    int main( int argc, char** argv )
    {
    QApplication myapp( argc, argv );
    
      QLabel* myLabel = new QLabel( "KDE ist toll" );
    
      myLabel->resize( 120, 30 );
      myapp.setMainWidget( myLabel );
      myLabel->show();
      return myapp.exec();
    }
    Aufrufen kannst du es so:

    gcc -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt

    Das sollte funken...

    Gruß

    Robert

    P.S.
    Ich hab es qttest.cpp genannt!


    [Diese Nachricht wurde geändert von robert (am 27 September 1999).]

    [Diese Nachricht wurde geändert von robert (am 27 September 1999).]

  4. #4
    Bernhard Koschnick
    Gast

    Post

    Oh, Oh...

    Wenn ich alles markiere / kopiere und in den Antwort-Container einfüge, soll mir dieses 'Krümel' nicht die haeder-includes unterschlagen.

    Robert, das meinst Du sicher mit Schreibfehler. Ansonsten, schlaues Buch setzt nur einen Zeiger, werde gleich beide Versionen ausprobieren.

    Jimmy, die Fehlermeldung war so offensichtlich, daß (diesmal) sogar ich als Lux-Hacker-Einsteiger der Frage nachgegangen bin. Gcc ist installiert.

    Danke Euch beiden. Werde mich jetzt sofort in die Hacker-Ecke zurückziehen. Aber der Übertragungsfehler ist so eigentümlich, da musste ich erst mal direkt antworten.

    Gruss

    Bernhard

  5. #5
    Bernhard Koschnick
    Gast

    Question

    Hi Robert

    Leider Fehlanzeige:

    bash-2.03# gcc -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt
    qttest.cpp: file not recognized: File format not recognized

    Das 'File format not recognized' macht mir Kopfzerbrechen. Kwrire schreibt reines ASCII und ist extra für's developing gebaut. Hab das völlig unnötigerweise aber noch mal mit kedit gecheckt.

    Der Doppelzeiger darf an der Stelle noch nicht relevant sein. Hab beide Versionen getestet, vermute aber, daß einfach nur Deine Tastatur schnell eingestellt ist. Einer von diesen Dingern ist doch schon mächtig genug, und so völlig fremd wird das Linux-API auch nicht sein. Was ich bisher gesehen habe, da war im Prinzip nur die Groß- und Kleinschreibung entgegengesetzt...

    Wo setzt man jetzt an, um den Fehler einzukreisen? Hab überhaupt keinen Anhaltspunkt.

    Gruss, Dank, good hacking und gut Geling für's Mammut-Hilfe-Project

    Bernhard

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    Hallo!

    Also der Doppel-Zeiger war schon beabsichtigt!

    char** argv entspricht char *argv[] <--- Zeiger auf Array!

    Du hattest in deiner Version oben übrigens #include &lt;qtapplicattion.h&gt; geschrieben! APPLICAT-T-ION, mit zwei T !!!
    Es wird aber nur mit einem geschrieben! ,)

    Deine Fehlermeldung wundert mich allerdings auch etwas.
    Kannst du mir die Datei mal per Mail schicken. Pack sie mit tar -cvzf qttest.tar.gz qttest.cpp ein!

    Gruß

    Robert


    [Diese Nachricht wurde geändert von robert (am 28 September 1999).]

    [Diese Nachricht wurde geändert von robert (am 28 September 1999).]

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    Ach nochwas...

    Gib mal bitte folgendes ein:

    gcc -v

    und

    g++ -v

    Beides sollte dir die Version zurückliefern und vorhanden sein!

    Gruß

    Robert

  8. #8
    Dufty II
    Gast

    Post

    > Naja, der gcc ist "nur" der C-Compiler und versteht die Syntax von C++ natürlich nicht.
    Nö!
    El Lobo, gcc ist kein compiler im strengen Sinn,
    [der wahre compiler ist cc1 (/usr/lib/gcc-lib/i486-linux/egcs-2.91.66/cc1)]
    sondern mehr ein sogenanntes frontend.
    Er erkennt das file an der Dateiendung:
    *.c => c-compiler Du mußt ran
    *.C v *.cpp => c++ wir sinds
    *.s => Assembler how are you
    etc ....

    ABER!
    gcc linkt nach c-Manier,
    g++ nach c++.
    Das kann Ärger geben!!
    Im diesem Fall nicht, dennoch:

    [angelo] [5:04:14] [~] > g++ -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt
    [angelo] [5:04:26] [~] > ls -l qttest
    -rwxr-xr-x 1 dufty user 7145 Sep 28 05:04 qttest
    [angelo] [5:04:32] [~] > gcc -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt
    [angelo] [5:04:43] [~] > ls -l qttest
    -rwxr-xr-x 1 dufty user 103452 Sep 28 05:04 qttest

    Also verwenden wir bei C++(KDE-)proggis g++


    > /root/prj/myapp.cpp
    Du compilierst unter ROOT???
    2 Minuspunkte für Berney!!


    > Kwrire schreibt reines ASCII
    Nö, kwrite benützt defaultmäßig das (8 bit) ISO-Format.

    > Der Doppelzeiger darf an der Stelle noch nicht relevant sein.
    5 (!) Minuspunkte !!

    Bernhard, Du mußt den g++ nachinstallieren!
    Wenn dieser installiert ist, dann klappt es auch mit
    gcc ...
    (was wir aber nicht empfehlen )
    Der Fehler kommt auch (wahrscheinlich ) nicht vom qttest.cpp
    (liegt also nicht an kwrite/kedit), sondern vom
    link editor (ld). <IMG SRC="http://www.linuxforen.de/ubb/icons/icon8.gif" BORDER=0 ALIGN=ABSCENTER>
    Check out:
    gcc -v -I$QTDIR/include -L$QTDIR/lib qttest.cpp -lqt

    Diesmal steht das '-v' für VERBOSE (dt.: ausführlich),
    wenn
    gcc -v
    allein, dann für VERSION

    Gruss,
    Dufty II

    PS
    Willkommen beim Linux-hacking

    [Diese Nachricht wurde geändert von Dufty II (am 29 September 1999).]

  9. #9
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    Ähmmm.... Dufty???

    Welche Version von GCC benutzt du?

    robby@thor:/opt/home/robby/develop/src/c > gcc -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt
    robby@thor:/opt/home/robby/develop/src/c > ls -l qttest
    -rwxr-xr-x 1 robby walhalla 32731 Sep 28 17:07 qttest

    Aber du hast natürlich recht... g++ linkt *.cpp besser.

    Robert



    [Diese Nachricht wurde geändert von robert (am 28 September 1999).]

  10. #10
    Bernhard Koschnick
    Gast

    Wink

    Ah, anspornende Minuspunkte können manchmal richtig guttun. Bei den 5 Punkten ist vielleicht ein klitzekleiner zuviel? - Bin bisher mit dem 'Standard' von C++ gut ausgekommen, muss die Tiefen also noch nachlernen.

    Grüß Dich Dufty II

    Wenn Du erst am Ende der 'Dunkelphase' auftauchst, hast Du an einem interessanten Project getüftelt. Wünsche viel Erfolg gehabt zu haben.

    Mit Deiner Begründung ab > [satan] kann ich natürlich nichts anfangen.

    Ganz abgesehen davon muss ich sagen, vom zitierten Buch bin ich teils begeistert, teils enntäuscht. Der breite Anspruch, aus einem Kinderschüler einen User- und Hacker-Semi-Profi machen zu wollen, ist mit 330 Seiten niemals zu schaffen. Dazu kommen der Hang zur 'aufgebauschter' Sprache und zu schwer lesbaren verschachtelten 'So-und-Gegenteildarstellungen' in einem Satz. Die Infos gehen satt in die Tiefe, so manches basal wichtige wird aber nur angedeutet.

    Ich warte voll Spannung auf das in den Foren gelobte 'KDE das Buch', daß vergriffen ist und bald in Neuauflage erscheinen soll. Und das wird nicht das einzige Buch sein, das in die Sammlung gehört.

    Hi Jimmy

    Sorry. Ich hatte kaum eine Chance, Deinen Beitrag richtig zu verstehen: SuSe 6.2 kommt mit 6 prallgefüllten Scheiben. Natürlich habe ich in der Paketauskunft nach g++ gesucht. Einige Auflistungen, aber kein 'g++' als Programmname. Somit verstand mein zahnräder-armer Kopf g++ als eine Funktion von gcc.

    Aber die SuSe liefert andere C++-Compiler mit. Mal sehen, wie ich da mit der Syntax zurechtkomme.

    Hi Robert

    Ich hab erst an Dich gepostet und danach den Thread aktuell geöffnet. War ein Fehler. Einfältiger gelobt Besserung.

    Gruss und Dank an alle Helfer

    Bernhard

    P.S. Danke fürs 'Willkommen beim Linux-hacking'. Trotzdem?

  11. #11
    Bernhard Koschnick
    Gast

    Post

    Oh,

    Hi Robert,

    sehe gerade, meine e-mail kommt zurück. Hatte den Alias aus 'Empfänger' kopiert und über t-online-mail abgesetzt; Netzscape führt die paste-Funktion nicht aus, und alles noch mal schreiben?.... Aber ohne die Adresse, die Netscape im Hintergrund verwaltet, klappt das offensichtlich nicht.

    Gruss

    Bernhard

  12. #12
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    Ja, sorry...

    Mein Mail ISP hat seinen Dienst eingestellt, bzw. die Domain verkauft.

    Heute werden wohl einige ihre Mail zurück bekommen haben und ich hab mich heute schon damit herumgeärgert... ;(

    Ich werde die Mail-Adr. gleich ändern.

    Hier mal für dich.
    Schick es an grw@gmx.net !

    Robert


    [Diese Nachricht wurde geändert von robert (am 28 September 1999).]

  13. #13
    Bernhard Koschnick
    Gast

    Question

    OK, nur mal so zum 'warmlaufen' ein Durchgang mit -v:

    bash-2.03# gcc -v -I$QTDIR/include -L$QTDIR/lib qttest.cpp -lqt
    Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2.3/specs
    gcc version 2.7.2.3
    /usr/i486-linux/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i486-linux/2.7.2.3/crtbegin.o -L/usr/lib/qt/lib -L/usr/lib/gcc-lib/i486-linux/2.7.2.3 -L/usr/i486-linux/lib qttest.cpp -lqt -lgcc -lc -lgcc /usr/lib/gcc-lib/i486-linux/2.7.2.3/crtend.o /usr/lib/crtn.o
    qttest.cpp: file not recognized: File format not recognized

    Dann: SuSe packt c++ und g++ in gpp zusammen. Hab das Paket sofort installiert. (Hab gpp und die Paketbeschreibung schon gelesen. Geht wohl nicht unter 4 Minuspunkte?)

    Jetzt will ich aber das folgende nicht mehr lesen:

    bash-2.03# g++ -o qttest qttest.cpp I"${QTDIR}/include" -L"${QTDIR}/lib" -lqt
    g++: I/usr/lib/qt/include: No such file or directory
    qttest.cpp:1: qapplication.h: No such file or directory
    qttest.cpp:2: qlabel.h: No such file or directory

    Denn:

    bash-2.03# locate qapplication.h
    /usr/doc/packages/qt/html/qapplication.html
    /usr/lib/qt/include/qapplication.h
    bash-2.03# locate qlabel.h
    /usr/doc/packages/qt/html/qlabel.html
    /usr/lib/qt/include/qlabel.h

    Weiss zwar nicht, ob das 'I' vor den Suchpfad richtig ist, trotzdem - sieht paradox aus.

    Gruss

    Bernhard

  14. #14
    Bernhard Koschnick
    Gast

    Post

    Hi Robert

    War also mein direkter Versuch auch sinnlos. Bekomme eben die Reture. Macht nichts. Für Dich wars schlimmer mit der vielen Aufklärungs-Post.

    Gruss

    Bernhard

  15. #15
    Bernhard Koschnick
    Gast

    Wink

    Oh, das war ja Deine Antwort. Direkt geht's also...

    Danke für die HTML-Aufklärung. Langsam wird's klar. Ich schreib ja gar nicht Text sondern in einen &lt;body&gt;. Hatte mich schon öfter gewundert, warum mehrere Leerzeichen zu einem werden.

    Der fehlende Zeiger auf das char Array kam übrigens von Ausprobieren. Da hatte ich ja die 5 Minuspunkte nuch nicht (...noch nicht gelesen).

    Dank Dir für die Hilfe. Eigentlich sollte jetzt alles geklärt sein, wenn nur mein aktueller Frage-Beitrag nicht wäre.

    Gruss

    Bernhard

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •