可能是一个简单的答案;我对 GCC 文档中用于其中一些标志的语言感到非常困惑!
无论如何,我有三个库和一个使用这三个库的程序。我使用单独的(可能)不同的警告标志集分别编译我的每个库。但是,我使用相同的优化标志集编译所有三个库。
然后,我使用自己的一组警告标志和在库编译期间使用的相同优化标志来编译我在这三个库中链接的主程序。
1)我是否必须编译带有优化标志的库,或者我可以在编译最终程序并链接到库时只使用这些标志?如果是后者,它会优化这些库中的全部或部分代码(可能是被调用的代码)吗?
2)我想使用 -fwhole-program -flto -fuse-linker-plugin 和链接器插件黄金。我在哪个阶段使用这些进行编译......只是最终编译还是在编译库期间需要存在这些标志?
3) 与 2) 几乎相同,但是使用 -fprofile-generate -fprofile-arcs 和 -fprofile-use。我知道一个人首先使用生成运行程序,然后使用。但是,我必须使用生成/使用等编译每个库还是只编译最终程序?如果它只是最后一个程序,那么当我使用 -fprofile-use 进行编译时,它还会优化库功能吗?