1、LTO概述
LTO: (link-time optimizations) 使整个程序在链接过程中实现二进程优化,降低目标码的体积,例如:一个LTO的内核可以减少超过10%的尺寸大小,并且内核优化后比常规的内核快百分之几,但是它目前的问题是需要占用更多的 系统内存 以及 更长的编译时间。
2、LTO使用(摘自:https://gcc.gnu.org/wiki/LinkTimeOptimization)
There are two main flags that enable LTO functionality.
-
-flto: This uses the main LTO features. When given several source files on the command line, it will write out the IL for each of them and then launch lto1 to load every function in every file. The reconstructed cgraph is then optimized as usual.
-
$ gcc -flto -c f1.c $ gcc -flto -c f2.c $ gcc -flto -o f f1.o f2.o
or$ gcc -flto -o f f1.c f2.c
-
-
-fwhopr: This is similar to -flto but it splits compilation to achieve scalability. It is intended to handle extremely large programs whose call graphs do not fit in memory. See the design document for details.