PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umgang mit gcc



Bernhard Koschnick
27-09-1999, 14:00
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

Jimmy
27-09-1999, 17:23
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

robert
27-09-1999, 18:46
Hallo Berhard!

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



#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! 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).]

Bernhard Koschnick
27-09-1999, 23:01
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

Bernhard Koschnick
28-09-1999, 00:02
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

robert
28-09-1999, 03:48
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).]

robert
28-09-1999, 03:53
Ach nochwas...

Gib mal bitte folgendes ein:

gcc -v

und

g++ -v

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

Gruß

Robert

Dufty II
28-09-1999, 05:58
> 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).]

robert
28-09-1999, 17:15
Ä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).]

Bernhard Koschnick
28-09-1999, 18:36
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

Bernhard Koschnick
28-09-1999, 18:43
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

robert
28-09-1999, 18:54
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).]

Bernhard Koschnick
28-09-1999, 23:40
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

Bernhard Koschnick
28-09-1999, 23:47
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

Bernhard Koschnick
29-09-1999, 00:23
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). 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

Dufty II
29-09-1999, 01:21
Hi Robby,

> g++ linkt *.cpp besser
Nicht nur das g++ kleineren Code erzeugt als gcc,
sondern gcc linkt nicht mal gegen die libstdc++ !!


Hi Bernhard,

> bash-2.03# ...
Compilierst Du schon wieder als Root-user??
Programmentwicklung (für Anwenderproggis) bedarf keiner Root-Rechte!
8 Minuspunkte!

> Mit Deiner Begründung ab > [angelo] kann ich natürlich nichts anfangen.
siehe oben => Hi Robby, > g++ linkt *.cpp ...

> Natürlich habe ich in der Paketauskunft nach g++ gesucht.
SuSE hat das (genialerweise??) Paket 'gpp' genannt (in der Serie 'd Programmentwicklung')

Dazu brauchst Du aber noch das Paket 'libgpp', auch in Serie 'd'.

> 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
*g*
Du hast vor 'I"${QTDIR}/include"' das '-' (Minuszeichen) vergessen, daher suchte
g++ nach einem Programm 'I"${QTDIR}/include', das es natürlich nicht gibt.

Wenn g++ das include-Verzeichnis (/usr/lib/qt/include) also nicht findet, kann
es auch die 'qapplication.h' und 'qlabel.h' , die ja in jenem include-Verzeichnis sich befinden,
logischerweise nicht finden, ist also ein Folgefehler http://www.linuxforen.de/ubb/wink.gif

Gruss,
Dufty II

Bernhard Koschnick
29-09-1999, 02:22
Hi Dufty II

root darf alles. root darf 1/4 Jahr lang lesen knobeln, testen, probieren, und dann gelingt ihm noch nicht einmal ein qttest. Also lass momentan noch 'rüberwachsen' die 8 Minuspunkte. Nicht, dass ich unzufrieden wäre, aber ich mag mich jetzt nur aufs 'Land sehen' konzentrieren:

bash-2.03# g++ -o qttest qttest.cpp -I$QTDIR/include -L$QTDIR/lib -lqt
/usr/i486-linux/bin/ld: cannot open crtbegin.o: No such file or directory
bash-2.03# less /usr/i486-linux/bin/ld
"/usr/i486-linux/bin/ld" may be a binary file. See it anyway?

OK, das vorhergehende hätte ich sehen müssen. Aber jetzt? Ich hab übrigens auch den fehlenden Zeiger auf char Array im Quellcode nachgesetzt. Also daran darfs jetzt nicht mehr liegen.

Bin ich zu blöde für Linux oder ist das so normal, wenn man mehr tun will als nur Anwender sein? Viele andere stellen mal eine Frage, vielleicht noch eine und sind dann glücklich (oder geben sich andere nur mit weniger zurieden?).

Gruss und Dank

Bernhard

Dufty II
29-09-1999, 03:05
Ich kann verstehen, daß Du langsam sauer bist, dennoch:
Kopf hoch Bernhard,
das schaffen wir schon,
wäre doch gelacht http://www.linuxforen.de/ubb/smile.gif

Also, mein non-root-Vorschlag gilt nach wie vor,
denn es ist so, daß root (im Defaultfall)
einen sehr kurzen Pfad aufweist
# echo $PATH
d. h., viele Programme kann root gar nicht
aufrufen, bzw. sie/er muß den den vollen Dateinamen benutzen, z.B.
# /opt/kde/bin/kfind

Eine Normaluserin braucht das (in der Regel) nicht, dort genügt ein
$ kfind
Vergleiche hierzu
$ echo $PATH
und Du wirst sehen, das dieser (normalerweise) VIEL länger ist als der von root.

Wie auch immer,
Ich habe keine SuSE, deshalb kann ich auch zu Deinem Problem wenig sagen, nur das
(in der Regel) sowas schon klappt, was Du machen willst, Deine Fehleranhäufung ist sehr, sehr unglücklich.

Ich sehe, daß crtbegin.o bei SuSE6.2 (auch) im paket 'egcs' drin ist,
hast Du dieses Paket installiert?
Wenn nicht, bitte nachholen.

Begründung: (als nicht-SuSE-expertin)
SuSE 6.2 hat 2 C-Compiler, einen
gcc und
einen egcs.
Der C++-Compiler (gpp) gehört zum egcs-c-compiler

So, dieses paket und libgpp und gpp sollten sich auf Deine Platte befinden.

*******************************************

>/usr/i486-linux/bin/ld: cannot open crtbegin.o: No such file or directory
> bash-2.03# less /usr/i486-linux/bin/ld
> "/usr/i486-linux/bin/ld" may be a binary file. See it anyway?

ld ist der "Link Editor", es ist also ein ausführbares Programm,
das Kommando 'less' zeigt in der Regel nur
ASCII-Dateien an und keine binaries.

Also, eine Compilation läuft so ab:
a) präprocessing
b) (eigentliches) compilieren
c) assemblieren
d) linked

Nun, "gcc" ist also nur ein frontend, die eingentlichen programme, die die Arbeit tun, sind für
a) cpp (das ist der C-Präprocessor)
b) cc1 (das ist der (wahre) C-Compiler)
c) as (das ist der Assembler)
d) ld (das ist der Link Editor, kurz Linker genannt)

Also,
es muß klappen,
das wird schon http://www.linuxforen.de/ubb/wink.gif

Gruss,
Dufty II

Dufty II
29-09-1999, 03:19
PS
Ich würde sogar die alten Pakete 'gcc' und
'gccfront' zuerst wieder DEinstallieren
und danach erst den 'egcs' einbauen.
(damit es keine Konflikte zwischen gcc und egcs gibt)
Aber wie gesagt, bin ich nicht die SuSE.

Dufty II
29-09-1999, 03:46
PPS
In der Praxis schaut dies dann so aus:
[angelo] [3:29:26] [~/bernhard] > g++ -v -Wall -O -I"${QTDIR}/include" -L"${QTDIR}/lib" -o qttest qttest.cpp -lqt

Schritt a:
/usr/lib/gcc-lib/i386-linux/egcs-2.91.66/cpp -lang-c++ -v -I/usr/lib/qt/include -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__ -Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -Wall -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ qttest.cpp /tmp/ccDDiuxO.ii


Schritt b:
/usr/lib/gcc-lib/i386-linux/egcs-2.91.66/cc1plus /tmp/ccDDiuxO.ii -quiet -dumpbase qttest.cc -O -Wall -version -o /tmp/ccAG7ILz.s

Weil wir hier C++ haben, heißt der 'wahre' C++-Compiler auch entsprechend 'cc1plus'


Schritt c:
/usr/i386-linux/bin/as -V -Qy -o /tmp/cc6DQedO.o /tmp/ccAG7ILz.s


Schritt d: Noch schnell gelinkt:
/usr/i386-linux/bin/ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o qttest /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-linux/egcs-2.91.66/crtbegin.o -L/usr/lib/qt/lib -L/usr/lib/gcc-lib/i386-linux/egcs-2.91.66 -L/usr/i386-linux/lib /tmp/cc6DQedO.o -lqt -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/egcs-2.91.66/crtend.o /usr/lib/crtn.o

Bei 'crtbegin.o' handelt es sich also um
einen START-UP-Code (CReaTionBEGIN)

DEIN Code befindet sich in /tmp/cc6DQed0.o
alles andere ist eigentlich nur Beiwerk http://www.linuxforen.de/ubb/smile.gif

PPPS
Die C++-Standartbibliothek ist die libstdc++, die unter SuSE mit libqpp firmiert http://www.linuxforen.de/ubb/wink.gif

Alles halb so wild, nur die Bezeichnung sind
recht leicht verwechselbar (cpp,c++,gcc,g++,cc,etc.)

robert
29-09-1999, 03:57
Berhard, mach dir nicht draus. Aller Anfang ist schwer. Wenn es mal richtig funktioniert wird es auch einfacher. Das bekommen wir schon hin, wie Dufty so schön sagte.

Grundsätzlich scheinen deine Packete nicht alle oder nicht vollständig installiert zu sein.
Außerdem, wie Dufty schon bemerkte, schau das du dich als normaler User einloggst.
Es ist dadurch bestimmt einfacher!

So, nun schaun wir mal...

Wenn's nicht klappt, schreib einfach.

Gruß

Robby http://www.linuxforen.de/ubb/wink.gif

robert
29-09-1999, 04:00
Dufty,

ich glaube jetzt hast du das Chaos perfekt gemacht! http://www.linuxforen.de/ubb/wink.gif http://www.linuxforen.de/ubb/smile.gif http://www.linuxforen.de/ubb/smile.gif :]

Bring ihn doch nicht vollends durcheinander... http://www.linuxforen.de/ubb/smile.gif

Robby

Dufty II
29-09-1999, 05:21
Oops,
Verzeihng Bernhard,
jetzt sehe ich es erst:
Bei Deiner Nachricht um 23.30 (28.9.1999)
> gcc version 2.7.2.3
und
> ... /usr/lib/gcc-lib/i486-linux/2.7.2.3/crtbegin.o
Ohje, ja das ist der 'gcc', Du brauchst also
wirklich den 'egcs',
damit es mit den C++-Programmen hinhaut.
Da hätte ich genauer aufpassen sollen!
Oops, kannst Du mir nochmal verzeihen?

Gruss,
Dufty II

Bernhard Koschnick
29-09-1999, 05:29
Und mit ölverschmierten Fingern wieder aus der Werkstatt zurück.

Ja, ich war einer optionalen Empfehlung gefolgt und hatte egcs de- und gccfronf installiert. Der Warnhinweis, daß mit egcs der 2-er Kernel nicht kompiliert werden kann, war der Grund. Hab das korrigiert und Deine 'P.S.-Reihenfolge' beachtet. Libgpp und (s. Thread) gpp waren installiert.

bash-2.03# g++ -o qttest qttest.cpp -I$QTDIR -L$QTDIR/lib -lqt
qttest.cpp:1: qapplication.h: No such file or directory
qttest.cpp:2: qlabel.h: No such file or directory
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

less kann bei 'y' auch Binaries darstellen, bringt hier für die Demo aber nur eine Zeile, Locate zwei (und bei 'ner Demo lass ich das Original gerne stehen).

Auf jeden Fall wird jetzt nicht mehr das Directory angemahnt, also ein Schritt weiter. Aber da Fehlt noch mehr. Die Paketbeschreibungen sind für den Einstieg teilweise zu knapp. Schade, daß Du keine SuSianerin bist bzw. ich kein RedHatti (ich peil sowieso schon das neue RedHat an).

Übrigens SuSE-expertin? Donnerwetter. Als ich gebaut wurde, ward ich mit dem Wissen ausgestattet, daß beide 'Sorten' gleichwertig sind. Aber die Realität wollte, daß ich bei dem 'y' am Namensende, dem klaren Schreibstil und dem unglaublich tiefen Durchblick automatisch an einen! Dufty dachte. http://www.linuxforen.de/ubb/redface.gif http://www.linuxforen.de/ubb/redface.gif http://www.linuxforen.de/ubb/redface.gif Wieviele Minuspunkte gibt das?

Übrigens Sauer? Nein. Hab aber schon beim Runden-Einstieg das Problem gesehen: Bei so wenigen Fragen hier, in KDE (na ja, da sind's schon ein paar mehr) und Allgemein (s. KDE) werde ich wohl sehr viele Fragen selbst stellen müssen. Und ich fackel da nicht lange. Ich schick die Zaungäste mal dahin, wo wirklich was los ist (ca. 150 Einzelbeiträge pro Tag! allein in der Borland-VCL-Runde ((auch private Initiative)), mein Startbeitrag war also nicht für die Foren-Mitglieder gedacht) und versuche zu demonstrieren, wie man Fragen der individuellen Mentalität entsprechend in etwa bringen kann. Mehr kann ich nicht tun. - Natürlich, 150, wozu soviel. Wesentlich kleinere Zahlen bleiben überschaubar.

Gruss, Dank und gut Hack

Bernhard

Dufty II
29-09-1999, 05:47
> bash-2.03# g++ -o qttest qttest.cpp -I$QTDIR -L$QTDIR/lib -lqt

Mmmh, probiers mal mit
bash-2.03$ g++ -o qttest qttest.cpp -I$QTDIR/include -L$QTDIR/lib -lqt

http://www.linuxforen.de/ubb/wink.gif

Gruss,
Dufty II

Dufty II
29-09-1999, 06:05
PS
> bash-2.03# g++ -o qttest qttest.cpp -I$QTDIR/include -L$QTDIR/lib -lqt
> /usr/i486-linux/bin/ld: cannot open crtbegin.o: No such file or directory
> bash-2.03# less /usr/i486-linux/bin/ld
> "/usr/i486-linux/bin/ld" may be a binary file. See it anyway?

Ich sollte Dich vielleicht noch darauf hinweisen, wie
diese Fehlrmeldung zu interpretieren ist
und ein 'less' (oder locate) hier gar nichts bringt:
Das proggis '/usr/i486-linux/bin/ld" hat bei seiner Arbeit eine
Datei 'crtbegin.o' nicht gefunden.
D. h. wenn Du was suchen willst, mußt
Du
$ locate crtbegin.o
oder besser
$ find / -name crtbegin.o
eingeben.

Gruss,
Dufty II

Dufty II
29-09-1999, 06:10
PPS
Der Hinweise für den Umgang mit egcs gilt für
2.0.x-kernel, nicht für 2.2.x-kernel wie sie
in SuSE 6.1 bzw. 6.2 enthalten sind.

> Redhatti
Oh nein!
Nur Debian bringt die Erlösung http://www.linuxforen.de/ubb/wink.gif

Gruss,
Dufty II

Bernhard Koschnick
29-09-1999, 06:20
Uff,

während ich tüftle und noch mal verschiedenes nachlese, macht Ihr schon wieder die nächsten Vorschläge? - Richtiger Teamgeist ist halt unbezahlbar.

Nein, Dufty II,

da gibts nichts zu verzeihen. Ist ohnehin erstaunlich, wie weit Du auf einer anderen Plattform helfen kannst.

Mach Dir keine Sorgen, Robert,

klar hab ich vieles, was Dufty II jetzt gesagt hat, nicht verstanden. Aber auf meiner Platte ist noch genügend Platz. Irgendwann werd ichs schon verstehen. Ich bin nicht der Typ, der was fertiges benutzen will. Bewundern, was andere zum laufen gebracht haben, selbst etwas gut handelbares zum Laufen bringen, das ist es. Davor muss halt gelernt werden.

Das mit dem Normal-User scheint ja wirklich wichtig zu sein. Aber ändert das was an dem momentan vorhandenen Problem? OK, also mal als Normal-User versuchen.

Gruss

Bernhard

Dufty II
29-09-1999, 06:35
Mmmh, sollte es immer noch nicht klappen,
dann vielleicht mal mit -v posten, also
bash-2.03$ g++ -v -o qttest qttest.cpp -I$QTDIR/include -L$QTDIR/lib -lqt
& das Resultat davon

damit mensch besser erkennt, wo es noch zwickt.

Gruss,
Dufty II

PS
Also, es gibt noch mehr Möglichkeiten, z.B.
$ ldconfig -v
Dieser Befehl schaut nach, welche Libraries genützt werden.

Mensch kann auch (später) einmal
$ g++ -v -c -o qttest.o -I$QTDIR/include -L$QTDIR/lib qttest.cpp
benutzen, um dann 'mit der Hand' zu linken:
$ ld -dynamic-linker /lib/ld-linux.so.2 -o qttest /usr/lib/crt1.o qttest.o -lqt /usr/lib/crtn.o

ach ja, ....


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

Bernhard Koschnick
29-09-1999, 07:57
Na endlich, Teilerfolg http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif

Hab die cpp nach /var/prj kopiert und alle Rechte vergeben. User hat keinen Zugriff, root hat den 18 KB großen qttest gebaut und volle Zugriffs- und Ausführungsrechte vergeben.

Root erhält die Fehlermeldung: Command not found.
Wenn User file öffnen will, wird der X-Server gesucht.
User erhält beim X-Start einen schwarzen Bildschirm (genauer, Bildschirm schaltet sich ab).

Ob das was mit dem eingeschränkten Grafikkarten-Support zu tun hat? Hmmm...

Root- und User-Verwalter muss lesen.

Uff, Linux-Sprache, schwere Sprache http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif http://www.linuxforen.de/ubb/biggrin.gif

Gruss

Bernhard

P.S. Dufty II, siehs mir nach, daß ich less und locate auf den falschen file angesetzt habe. Ich wollte es jetzt einfach wissen. Und was sieht man da?...

Bernhard Koschnick
29-09-1999, 08:25
Und noch 'n Kalauer (relativ natürlich):

egcs kann Kernel 2.0 nicht kompilieren. Welchen Kernel liefert SuSe 6.2 aus? Ja. Alles, was darunter ist, interessiert Installierer nicht. Er installiert jetzt, die Paketbeschreibung bezieht sich auf jetzt...Nö. Aber das setzt Installierer als Basis voraus und ignoriert die '0'. So leicht passieren Quatsch und Chaos. Sorry, aber manchmal kann gut gemeinte Fürsorge auch das Falsche bewirken, wenn sie da erfolgt, wo es üblicherweise nicht notwendig ist.

Gruss

Bernhard