Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 31

Thema: Umgang mit gcc

  1. #16
    Dufty II
    Gast

    Wink

    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

    Gruss,
    Dufty II

  2. #17
    Bernhard Koschnick
    Gast

    Question

    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

  3. #18
    Dufty II
    Gast

    Unhappy

    Ich kann verstehen, daß Du langsam sauer bist, dennoch:
    Kopf hoch Bernhard,
    das schaffen wir schon,
    wäre doch gelacht

    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

    Gruss,
    Dufty II

  4. #19
    Dufty II
    Gast

    Post

    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.

  5. #20
    Dufty II
    Gast

    Post

    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

    PPPS
    Die C++-Standartbibliothek ist die libstdc++, die unter SuSE mit libqpp firmiert

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

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

    Post

    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

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

    Post

    Dufty,

    ich glaube jetzt hast du das Chaos perfekt gemacht! :]

    Bring ihn doch nicht vollends durcheinander...

    Robby

  8. #23
    Dufty II
    Gast

    Red face

    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

  9. #24
    Bernhard Koschnick
    Gast

    Wink

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

  10. #25
    Dufty II
    Gast

    Talking

    > 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



    Gruss,
    Dufty II

  11. #26
    Dufty II
    Gast

    Post

    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

  12. #27
    Dufty II
    Gast

    Post

    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

    Gruss,
    Dufty II

  13. #28
    Bernhard Koschnick
    Gast

    Wink

    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

  14. #29
    Dufty II
    Gast

    Post

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

  15. #30
    Bernhard Koschnick
    Gast

    Wink

    Na endlich, Teilerfolg

    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

    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?...

Lesezeichen

Berechtigungen

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