Καλημέρα, για όσους χρησιμοποιείται τον 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'
Μπορεί να δουλέψει με το πρώτο ή το δεύτερο. Δοκιμάστε και αν δείτε "ar: xxx.o: plugin needed to handle lto object", τότε το lto plugin δεν φορτώθηκε σωστά και άσχετα αν το compilation πετύχει, ο linker δε θα έχει εφαρμόσει Link Time Optimizations.Κώδικας:# 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'
C(XX)FLAGS :ενώ για τον (gold) linker,Κώδικας:LTO="-flto=4 -flto-report -fno-fat-lto-objects -flto-compression-level=6 -fuse-linker-plugin -flto-partition=none
Πολλοί συστήνουν και το -Wl,-z,relro μαζί με το -z,now για μεγαλύτερη ασφάλεια.Κώδικας:LDFLAGS="-Wl,--as-needed -Wl,-O1 -Wl,--hash-style=both -Wl,--sort-common -Wl,-z,combreloc -Wl,--trace -Wl,-z,now -Wl,--stats ${LTO}"
Όπως αναφέρεται και εδώ όμως, πολλές cflags είναι περιττές. Δοκιμάστε με -flto=NUMBER (άντε και -flto-report για verbosity) έχοντας δημιουργήσει το symlink και βλέπετε.
Εμφάνιση 1-2 από 2
Θέμα: GCC & LTO
-
19-04-17, 17:00 GCC & LTO #1Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.
-
09-05-17, 16:11 Απάντηση: GCC & LTO #2
Ελέγχουμε ότι ο ld υποστηρίζει plugins, ως εξής:
Κώδικας:$ ld --help | grep plugin -plugin PLUGIN Load named plugin -plugin-opt ARG Send arg to last-loaded plugin
Κώδικας:$ gcc -O2 t.c -flto --verbose 2>&1 | grep collect2.*plugin
Κώδικας:/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
Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.
Παρόμοια Θέματα
-
Διάφορα set cpu&mobo am3, atom itx, 1155,fm2+, ram
Από terry39 στο φόρουμ ΠροσφοράΜηνύματα: 0Τελευταίο Μήνυμα: 18-04-17, 10:12 -
GCC 6.1 Released
Από petran_18 στο φόρουμ Software γενικάΜηνύματα: 0Τελευταίο Μήνυμα: 28-04-16, 21:48
Bookmarks