Εμφάνιση 1-2 από 2

Θέμα: GCC & LTO

  1. #1
    Εγγραφή
    04-02-2009
    Ηλικία
    33
    Μηνύματα
    1.486
    Downloads
    4
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    2048/256
    ISP
    Cyta Hellas
    Καλημέρα, για όσους χρησιμοποιείται τον GCC και ξέρετε το LTO ας συγκρίνουμε τα flags με τα οποία αυτό επιτυγχάνεται, μιας και το documentation γύρω από το θέμα είναι ελλιπές.

    Πρώτα δημιουργούμε ένα symlink του lto plugin μέσα στον κατάλογο του linker ώστε να μπορεί να δουλέψει το lto.
    Κώδικας:
    # ln -sfv /usr/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so /usr/lib/bfd-plugins/ 
    '/usr/lib/bfd-plugins/liblto_plugin.so' -> '/usr/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so'
    ή
    Κώδικας:
    # ln -fvs /usr/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so.0.0.0 /usr/x86_64-pc-linux-gnu/binutils-bin/lib/bfd-plugins
    '/usr/x86_64-pc-linux-gnu/binutils-bin/lib/bfd-plugins/liblto_plugin.so.0.0.0' -> '/usr/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so.0.0.0'
    Μπορεί να δουλέψει με το πρώτο ή το δεύτερο. Δοκιμάστε και αν δείτε "ar: xxx.o: plugin needed to handle lto object", τότε το lto plugin δεν φορτώθηκε σωστά και άσχετα αν το compilation πετύχει, ο linker δε θα έχει εφαρμόσει Link Time Optimizations.

    C(XX)FLAGS :
    Κώδικας:
    LTO="-flto=4 -flto-report -fno-fat-lto-objects -flto-compression-level=6 -fuse-linker-plugin -flto-partition=none
    ενώ για τον (gold) linker,
    Κώδικας:
    LDFLAGS="-Wl,--as-needed -Wl,-O1 -Wl,--hash-style=both -Wl,--sort-common -Wl,-z,combreloc -Wl,--trace -Wl,-z,now -Wl,--stats ${LTO}"
    Πολλοί συστήνουν και το -Wl,-z,relro μαζί με το -z,now για μεγαλύτερη ασφάλεια.

    Όπως αναφέρεται και εδώ όμως, πολλές cflags είναι περιττές. Δοκιμάστε με -flto=NUMBER (άντε και -flto-report για verbosity) έχοντας δημιουργήσει το symlink και βλέπετε.
    Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.

  2. #2
    Εγγραφή
    04-02-2009
    Ηλικία
    33
    Μηνύματα
    1.486
    Downloads
    4
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    2048/256
    ISP
    Cyta Hellas
    Ελέγχουμε ότι ο ld υποστηρίζει plugins, ως εξής:
    Κώδικας:
    $ ld --help | grep plugin
      -plugin PLUGIN              Load named plugin
      -plugin-opt ARG             Send arg to last-loaded plugin
    Έπειτα για να βεβαιωθούμε ότι ο gcc χρησιμοποιεί σωστά το plugin, δημιουργούμε ένα hello world πρόγραμμα σε C (ως t.c) και :
    Κώδικας:
    $ gcc -O2 t.c -flto --verbose 2>&1 | grep collect2.*plugin
    Αν η έξοδος δεν είναι κενή, τότε το plugin χρησιμοποιείται σωστά. Σε μένα το output ήταν κάπως έτσι:
    Κώδικας:
     /usr/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/collect2 -plugin /usr/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDceAO3.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -flto --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../x86_64-pc-linux-gnu/lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../.. /tmp/ccrXyO7D.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/crtn.o
    Δείτε επίσης το σετάρισμα του LLVM
    Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.

Παρόμοια Θέματα

  1. Διάφορα set cpu&mobo am3, atom itx, 1155,fm2+, ram
    Από terry39 στο φόρουμ Προσφορά
    Μηνύματα: 0
    Τελευταίο Μήνυμα: 18-04-17, 10:12
  2. GCC 6.1 Released
    Από petran_18 στο φόρουμ Software γενικά
    Μηνύματα: 0
    Τελευταίο Μήνυμα: 28-04-16, 21:48

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας