-
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' http://www.linuxforen.de/ubb/wink.gif vielleicht einen
kleinen Tip geben? Nur so für den Einstiegs-Geschmack? Wäre super.
Gruss
Bernhard
-
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
-
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 <qapplication.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();
}
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! http://www.linuxforen.de/ubb/wink.gif
[Diese Nachricht wurde geändert von robert (am 27 September 1999).]
[Diese Nachricht wurde geändert von robert (am 27 September 1999).]
-
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
-
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
-
Hallo!
Also der Doppel-Zeiger war schon beabsichtigt!
char** argv entspricht char *argv[] <--- Zeiger auf Array!
Du hattest in deiner Version oben übrigens #include <qtapplicattion.h> 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).]
-
Ach nochwas...
Gib mal bitte folgendes ein:
gcc -v
und
g++ -v
Beides sollte dir die Version zurückliefern und vorhanden sein!
Gruß
Robert
-
> 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++ http://www.linuxforen.de/ubb/smile.gif
> /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 http://www.linuxforen.de/ubb/wink.gif )
Der Fehler kommt auch (wahrscheinlich http://www.linuxforen.de/ubb/wink.gif ) 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 http://www.linuxforen.de/ubb/biggrin.gif
[Diese Nachricht wurde geändert von Dufty II (am 29 September 1999).]
-
Ähmmm.... Dufty???
Welche Version von GCC benutzt du? http://www.linuxforen.de/ubb/wink.gif
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. http://www.linuxforen.de/ubb/wink.gif
Robert
[Diese Nachricht wurde geändert von robert (am 28 September 1999).]
-
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. http://www.linuxforen.de/ubb/biggrin.gif
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. http://www.linuxforen.de/ubb/redface.gif
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. http://www.linuxforen.de/ubb/redface.gif http://www.linuxforen.de/ubb/biggrin.gif
Gruss und Dank an alle Helfer
Bernhard
P.S. Danke fürs 'Willkommen beim Linux-hacking'. Trotzdem? http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif
-
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
-
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).]
-
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?) http://www.linuxforen.de/ubb/redface.gif
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
-
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
-
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 <body>. 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). http://www.linuxforen.de/ubb/biggrin.gif
Dank Dir für die Hilfe. Eigentlich sollte jetzt alles geklärt sein, wenn nur mein aktueller Frage-Beitrag nicht wäre.
Gruss
Bernhard