GNU Compiler Collection kompilieren



  • hallo,

    ich versuche gerade, mit meinem Ubuntu 16.04 System GCC 7.2 zu kompilieren.
    Quellcode habe ich von der offiziellen Seite heruntergeladen.
    Dann folgende Schritte:

    mkdir build
    cd build
    ../configure --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --enable-checking=release --enable-languages=c,c++ --program-suffix=-7.2 --disable-multilib --prefix=/opt/gcc-7.2.0
    make -j4
    

    Lief alles über 1 Stunde problemlos. Nun ist aber immer noch mein Ordner /opt/gcc-7.2.0 leer. Und ich finde auch nirgendwo den bin-Ordner mit den executables.
    Nur in dem build-Ordner finde ich die ganzen *.o-Dateien und einige andere Dateien. Außerdem eine ausführbare Datei namens "xgcc" und "xg++". Wenn ich xgcc --version aufrufe, dann wird mir version 7.2.0 ausgegeben. Wenn ich damit ein Programm kompilieren will, dann wird der Compiler nicht gefunden (cc1plus).

    Was habe ich falsch gemacht und was muss ich machen, damit alles, was ich später brauche, in dem Ordner /opt/gcc-7.2.0 landet? Also include, lib und bin?
    Wenn ich "locate gcc-7" eingebe, dann wird nichts ausgegeben, obwohl definitiv entsprechende Ordner existieren.



  • Da fehlt das make install am Ende.



  • Tatsächlich.
    Vielen Dank.

    Ich habe schon davor immer viel mit make kompiliert, aber das make install habe ich irgendwie noch nie verstanden.
    Sonst brauchte ich das eben meistens nur, wenn ich die Dateien in /usr/bin haben wollte. Die executables lagen aber trotzdem üblicherweise im build-Verzeichnis und ich konnte die von dort im Zweifelsfall einfach rauskopieren.

    Vielen Dank noch einmal!
    Ersparte mir einige Suche.



  • Das xgcc ist ja (vermute ich zumindest) genau der Compiler. Und der wird dann (warum auch immer) beim make install nicht nur kopiert, sondern auch passend umbenannt. Vielleicht wegen der symlink-Magie, die gcc da betreibt?!

    Und ob Du jetzt nach /usr oder nach /opt/foo installierst ist doch ziemlich egal - Schreibrechte hast Du da als normaler User nicht, also macht ein getrenntes make install Sinn.



  • SG1 schrieb:

    Das xgcc ist ja (vermute ich zumindest) genau der Compiler.

    Meines Wissens ist das die Variante des Compilers mit dem sich auf dem Build-System (--build) Code für das Target-System (--target) bauen lässt.
    Da in diesem Fall jedoch build, host und target dasselbe System spezifizieren, macht das keinen Unterschied. Ist man jedoch so verwegen und
    baut z.B. auf Linux einen Android-ARM-Compiler, der unter Windows laufen soll, dann wäre xgcc wahrscheinlich nicht die Datei die man haben will.

    Gerade bei sowas wie GCC würde ich mich daher auf make install verlassen, die Magie, die dort von den Build-Skripten veranstaltet wird, finde
    ich immer wieder schwer durchschaubar (Gut, ich bin immerhin auch so ein Spinner, der schonmal unter Windows einen GCC-Crosscompiler für Linux
    gebaut hat ... kann ein Erlebnis der besonderen Art sein ;)).


Log in to reply