什么是 lto1.exe?
What is lto1.exe?
当您检查 mingw 时,您会发现 c 编译器 cc1.exe(有趣的是,在 9.2 中它的大小增长了将近 25 MB)cc1plus.exe 是 c++ 编译器(相同大小)collect2.exe linker (afiak) 疯了 什么是 lto1.exe?
我在谷歌上搜索了一个多小时,但没有找到这方面的信息。是否有关于此内容的有用信息可供阅读?发送
ps。我怀疑它可能与 link 时间优化有关,但没有找到更多关于它的信息,我想知道得更多
还有一个问题什么是 gcc.exe g++.exe 和 mingw32-gcc.exe mingw32-g++.exe 那么
我需要更多信息,越多越好,tnx
这不是 mingw / Windows 特定的;它是 GCC 的一个特性/组件。
what is lto1.exe?
它是 lto 编译器 :o)。 lto 基本上是用 -flto
编译时编写的字节码,其中 "lto" 或 "LTO" 代表 "link-time optimization".
这些优化不是由linker执行,而是由编译器在link时间执行当来自所有模块的(字节)代码可用时执行全局优化。流程如下:
- C/C++ 编译器(
cc1
用于 C 或 cc1plus
用于 C++)将 C/C++ 编译为字节码并将其写入汇编文件*.s
.
- 汇编程序像往常一样由汇编器汇编成目标代码
*.o
。 lto-code 在专门的部分中发布。
- 在 link 时间,linker(插件)回调编译器并按要求提供所有对象和库。提取字节码,
lto1
编译器将其编译为最终机器码。
- 最终的机器代码由汇编程序汇编成目标代码。
- linker links / 将这些对象定位到最终的可执行代码。
您在 -save-temps
and having a look at the saved *.s
files. Recent versions of GCC don't even bother with writing assembly code; they are just writing lto code. To see the assembly code, specify -ffat-lto-objects
的 lto 部分中看到了字节码。但是请注意,这是 不是 最终代码。
funny growing in size in 9.2 it is almost 25 MB
GCC 可执行文件的大小不仅取决于 GCC 主要版本,而且在很大程度上取决于用于构建 GCC 的编译器的优化程度。
[编辑] 有关 LTO 的一些信息可以在 GCC wiki for LTO. Notice however that this page is no more active. One goto place for gory GCC internals is the gcc-help@gcc.gnu.org mailing list where all the developers are. There is also a section about LTO in the GCC internals.
上找到
当您检查 mingw 时,您会发现 c 编译器 cc1.exe(有趣的是,在 9.2 中它的大小增长了将近 25 MB)cc1plus.exe 是 c++ 编译器(相同大小)collect2.exe linker (afiak) 疯了 什么是 lto1.exe?
我在谷歌上搜索了一个多小时,但没有找到这方面的信息。是否有关于此内容的有用信息可供阅读?发送
ps。我怀疑它可能与 link 时间优化有关,但没有找到更多关于它的信息,我想知道得更多
还有一个问题什么是 gcc.exe g++.exe 和 mingw32-gcc.exe mingw32-g++.exe 那么
我需要更多信息,越多越好,tnx
这不是 mingw / Windows 特定的;它是 GCC 的一个特性/组件。
what is lto1.exe?
它是 lto 编译器 :o)。 lto 基本上是用 -flto
编译时编写的字节码,其中 "lto" 或 "LTO" 代表 "link-time optimization".
这些优化不是由linker执行,而是由编译器在link时间执行当来自所有模块的(字节)代码可用时执行全局优化。流程如下:
- C/C++ 编译器(
cc1
用于 C 或cc1plus
用于 C++)将 C/C++ 编译为字节码并将其写入汇编文件*.s
. - 汇编程序像往常一样由汇编器汇编成目标代码
*.o
。 lto-code 在专门的部分中发布。 - 在 link 时间,linker(插件)回调编译器并按要求提供所有对象和库。提取字节码,
lto1
编译器将其编译为最终机器码。 - 最终的机器代码由汇编程序汇编成目标代码。
- linker links / 将这些对象定位到最终的可执行代码。
您在 -save-temps
and having a look at the saved *.s
files. Recent versions of GCC don't even bother with writing assembly code; they are just writing lto code. To see the assembly code, specify -ffat-lto-objects
的 lto 部分中看到了字节码。但是请注意,这是 不是 最终代码。
funny growing in size in 9.2 it is almost 25 MB
GCC 可执行文件的大小不仅取决于 GCC 主要版本,而且在很大程度上取决于用于构建 GCC 的编译器的优化程度。
[编辑] 有关 LTO 的一些信息可以在 GCC wiki for LTO. Notice however that this page is no more active. One goto place for gory GCC internals is the gcc-help@gcc.gnu.org mailing list where all the developers are. There is also a section about LTO in the GCC internals.
上找到